我在尝试将数据从sqlite数据库获取到字符串时遇到了一个小问题。这是代码:
router.get('/', function(req, res) {
var db = req.db;
var thisShouldWork = 'Hmmm';
db.all('select rowid as id, value from test', function(err, rows) {
rows.forEach(function(row){
console.log(row.id + ": " + row.value);
thisShouldWork += 'Heeee';
});
});
thisShouldWork += 'What?';
console.log(thisShouldWork.toString());
res.send(thisShouldWork);
});
变量“ thisShouldWork”仅输出“ HmmmWhat?”在此代码的末尾,尽管其中也应该有一些“ Heeee”。此外,console.log会打印3行数据,因此肯定会执行for循环。
我是在做错事情而没有意识到吗,还是有另一种/更好的方法来实现同一件事?
最佳答案
回调是异步执行的。
之后您想做的任何事情都必须在回调的末尾移动:
router.get('/', function(req, res) {
var db = req.db;
var thisShouldWork = 'Hmmm';
db.all('select rowid as id, value from test', function(err, rows) {
rows.forEach(function(row){
console.log(row.id + ": " + row.value);
thisShouldWork += 'Heeee';
});
thisShouldWork += 'What?';
console.log(thisShouldWork.toString());
res.send(thisShouldWork);
});
});