我看到的与nodejs下的数据查询相关的所有内容都是写入控制台而不是从函数返回完整的数据。
我正在努力检索查询过的数据,这是我现在所拥有的,但它没有返回任何内容:
function dbGet(req,res,cb){
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database('/usr/share/csServ/csdb.sqlite');
var json = []; var jrow = {};
db.each("SELECT * from sensors", function(err,row) { jrow['id'] = row.id; jrow['tstamp'] = row.tstamp; json.push(jrow);}, cb(json) );
}
dbGet(req,res,function(json){
console.log(json);
});
如何将数据存入我的回调中,如何在dbGet()函数中关闭db db.close(),因为我不知道每个循环何时完成?
答案 0 :(得分:1)
如果您希望cb(json)
作为complete
回调,则需要将其包装在另一个function
中,以便等待评估:
db.each("SELECT * from sensors",
function (err, row) { /* ... */ },
function () { cb(json); }
);
按原样,当cb(json)
及其json.length === 0
值(当前为return
)传递给undefined
时,会立即调用db.each()
。< / p>
您也可以使用相同的function
来关闭连接:
db.each("SELECT * from sensors",
function (err, row) { /* ... */ },
function () {
db.close();
cb(json);
}
);