1

Node.JS の sqlite (sqlite3) ライブラリからソケット (http を使用) への書き込みに問題があります。

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

68 行目から 75 行目まで、4 回書き込もうとしています。db.each の外では、すべてがあらゆるコンテキストで機能します。その中で、惨めにクラッシュします。理由はよくわかりませんが、2 つのライブラリの間に競合があるように感じます

ところで、私はすでにSQL文を連結することが悪いことを知っています:3

4

1 に答える 1

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
});
于 2013-02-20T04:53:23.673 に答える