NodeJS上下文问题

时间:2013-02-20 04:43:03

标签: sqlite node.js http

我遇到从Node.JS中的sqlite(sqlite3)库写入套接字(带有http)的问题

https://gist.github.com/RyanCopley/6004c3ce372e060bbf18

68到75行,我有4次尝试写。在db.each之外,一切都适用于任何上下文。在它的内部,它悲惨地坠毁。我不完全确定原因,但我觉得这两个库之间存在冲突

BTW我已经知道连接SQL语句很糟糕了:3

1 个答案:

答案 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
});