Javascript 如何将SQLite结果传递给Nodejs中的回调

Javascript 如何将SQLite结果传递给Nodejs中的回调,javascript,node.js,sqlite,callback,electron,Javascript,Node.js,Sqlite,Callback,Electron,我将node.js的sqlite3模块与Electron模块一起使用。我是javascript新手,正在努力处理回调和异步代码 我的目的是让getTable函数运行,构建表数组,并将该数组传递给回调函数useTable函数 因此,此函数应构建并传递表数组: function getTable(callback) { const sqlite3 = require('sqlite3').verbose(); var testDatabase = new sqlite3.Databa

我将node.js的sqlite3模块与Electron模块一起使用。我是javascript新手,正在努力处理回调和异步代码

我的目的是让getTable函数运行,构建表数组,并将该数组传递给回调函数useTable函数

因此,此函数应构建并传递表数组:

function getTable(callback) {
    const sqlite3 = require('sqlite3').verbose();
    var testDatabase = new sqlite3.Database('app/data/testDatabase.db');
    var table = [];
    var testRow = [];
    testDatabase.each("SELECT * FROM test_Accounts", function(err, row) {
        testRow.push(row.test_id);
        testRow.push(row.test_creation_date);
        testRow.push(row.domain);
        testRow.push(row.test_login_url);
        table.push(testRow);
        testRow = [];
    });
    testDatabase.close();
    callback(table);
}
此函数将获取表数组并使用它:

function useTable(table) {
    //code that uses the table array passed to this function from the getTable function.
}
我会这样运行:

getTable(useTable);
当我运行此命令时,控制台不会显示任何错误。在getTable函数中,useTable函数似乎是在表数组完成之前运行的,我认为这是回调的主要目的之一,在获取该数组并将其传递给另一个函数之前,等待异步代码运行(在本例中构建一个数组)


如何确保getTable函数中的表数组在传递并运行useTable函数之前完全生成?

您应该使用
testDatabase.all
函数一次获取所有行。例如:

testDatabase.all('SELECT * from test_accounts',callback)
请参阅文档:

使用指定的参数运行SQL查询,然后使用所有结果行调用回调。

还有一个注意事项:在NodeJS中,当您调用回调函数时,建议使用第一个返回值作为
null
error

function useTable(err,table){
  if (err){
     throw Err
  }
  else {
     // Do something with the data
  }
}

getTable(useTable)