0
この2層のクエリはnode.jsにあり、各クエリは複数の結果を返す可能性があります。私のコードは実際には今のところそれを無視しています。これは私が得ることができる最高です、それは働いているようです。sqlite3でネストされたクエリを実装する方法
これを修正するにはどうすればいいですか、第2のコールバックの方法はわかりません。
また、db.close()は、第2のクエリが終了する前に呼び出されます。シリアル化されていても()です。
var getInfo1Db = function(コールバック){ var db = new sqlite3.Database( "DB.sqlite3");
var cnt = 0; var info1JsonObj = []; db.all("select * from Info1DB", function(err, rows) { db.serialize(function() { for(var ii=0, len=rows.length; ii<len; ii++) { var t2 = rows[ii].info1; var doorId = ... db.all("select * from DoorDB where ObjectID=" + doorId, function(err, row2) { if(err) { } else { var doorName = row2[0]... var info1JsonElem = { "DoorName" : doorName }; info1JsonObj.push(info1JsonElem); cnt++; if(cnt === rows.length) { callback(null, info1JsonObj); } } } ); // for the only door info based on door id } // for each row of info1 db.close(); // why this finishes before the 2nd db.all }); // end of serialize });
}
を助けます最初のクエリ)? – dmg
@dmg私は実際の問題を単純化し、各クエリは複数の結果を返すことができました。そして2番目のクエリは前の結果を使用し、次に3番目のクエリが使用します...最後に、私はちょうどこれらをperlで行い、node.jsはperlを呼び出します。 – user3552178