当前位置 : 主页 > 网页制作 > Nodejs >

node.js – sqlite3读取表中的所有记录并返回

来源:互联网 收集:自由互联 发布时间:2021-06-16
我正在尝试读取sqlite3表中的所有记录并通过回调返回它们.但似乎尽管使用序列化,这些调用仍然是ASYNC.这是我的代码: var readRecordsFromMediaTable = function(callback){ var db = new sqlite3.Database(f
我正在尝试读取sqlite3表中的所有记录并通过回调返回它们.但似乎尽管使用序列化,这些调用仍然是ASYNC.这是我的代码:

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();

        });


    });

}
网友评论