Javascript 如何将SQLite结果传递给Nodejs中的回调
我将node.js的sqlite3模块与Electron模块一起使用。我是javascript新手,正在努力处理回调和异步代码 我的目的是让getTable函数运行,构建表数组,并将该数组传递给回调函数useTable函数 因此,此函数应构建并传递表数组: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
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)