データベースローカルからデータを取得するアプリを作成しています。私は3つのテーブルを持っています。私が欲しいのは、最初のテーブルからデータを取得するときです。たとえば、従業員の詳細から、従業員がスーパーユーザーである場合はいくつかの条件を確認し、2 番目のテーブルのプロジェクトの詳細からデータを取得します。だから私が望むのは、従業員がスーパーユーザーの場合、2番目のテーブルからデータフェッチを実行してからさらに移動する必要があるということです。しかし、スーパーユーザー条件を取得し、その中に tx.executeSql 関数が見つかるとすぐに、スレッドが作成され、最初のテーブルからさらに実行が続行され、完了後にプロジェクトの詳細からデータの実行が開始されます。この実行を私が望むフローで機能させるのに役立つ人はいますか?
function getusersdetails()
{
db.transaction(function(tx){
tx.executeSql('select * from users',[],function(tx,results){
var dataset = results.rows.length;
if(dataset>0)
{
for(var i=0;i<dataset;i++)
{
if(results.rows.item(i).employ_type =='SU')
{
tx.executeSql('Select * from accessRites where user_Id = results.rows.item(i).user_id',[],function(tx,result){
//some execution here;
});
}
else if(results.rows.item(i).employ_type =='Manager')
{
tx.executeSql('Select * from usergroups where user_Id = results.rows.item(i).user_id',[],function(tx,results){
// some execution here;
});
}
else
{
//some execution here;
}
//here some usere execution ;
}
}
});
});
上記のコードでは、ユーザー タイプが su の場合、tx.executeSql 関数を検出するとすぐに 2 番目の関数を実行する代わりに、最初のクエリの実行を続行し、SU 条件で tx.execute を実行します。ユーザータイプが Su の場合、その内部で tx.execute 関数を完了し、最後にデータが必要なため、さらに実行を続行する必要があります。