我正在尝试读取sqlite3表中的所有记录并通过回调返回它们.但似乎尽管使用序列化,这些调用仍然是ASYNC.这是我的代码: var readRecordsFromMediaTable = function(callback){ var db = new sqlite3.Database(f
var readRecordsFromMediaTable = function(callback){ var db = new sqlite3.Database(file, sqlite3.OPEN_READWRITE | sqlite3.OPEN_CREATE); var allRecords = []; db.serialize(function() { db.each("SELECT * FROM MediaTable", function(err, row) { myLib.generateLog(levelDebug, util.inspect(row)); allRecords.push(row); } callback(allRecords); db.close(); }); }
当回调被触发时,数组将打印'[]’.
是否有另一个我可以进行的调用(而不是db.each)将一次性给我所有行.我没有必要在这里迭代每一行.
如果没有,我如何读取所有记录,然后才调用带有结果的回调?
我能够找到这个问题的答案.这是给任何正在寻找的人:var sqlite3 = require("sqlite3").verbose(); var readRecordsFromMediaTable = function(callback){ var db = new sqlite3.Database(file, sqlite3.OPEN_READONLY); db.serialize(function() { db.all("SELECT * FROM MediaTable", function(err, allRows) { if(err != null){ console.log(err); callback(err); } console.log(util.inspect(allRows)); callback(allRows); db.close(); }); }); }