我遇到从Node.JS中的sqlite(sqlite3)库写入套接字(带有http)的问题
https://gist.github.com/RyanCopley/6004c3ce372e060bbf18
68到75行,我有4次尝试写。在db.each之外,一切都适用于任何上下文。在它的内部,它悲惨地坠毁。我不完全确定原因,但我觉得这两个库之间存在冲突
BTW我已经知道连接SQL语句很糟糕了:3
答案 0 :(得分:1)
这是因为db.each
中的回调函数被称为异步。这意味着第79行:res.end()
将在res.write("Found row!");
之前调用,从而触发错误。
我认为你想要做的是这样的事情:
db.serialize(function() {
that.res.write("["); // works
db.each("SELECT * FROM messages WHERE channel = '"+q.chan+"' AND id > "+q.since+" ORDER BY id", function(err, row) {
res.write("Found row!"); //does not work
that.res.write("Found row!"); //does not work
console.log("Found row!");
});
res.write("]");//works
});