0

だから私は Koa.js とジェネレーターをいじっています。デモ用に簡単なサイトをまとめただけです。私はnode-sqlite3約束のためにsqliteとQを使用しています。ここに私のデータベースコードがあります:

module.exports.getLogs = function(){
    var deferred = Q.defer();
    var results = [];
    db.serialize(function(){
        db.each("SELECT ipAddress, action, details, timestamp FROM logs", function(err, row) {
            results.push({
                ipAddress: row.ipAddress,
                action: row.action,
                details: row.action,
                timestamp: new Date(row.timestamp)
            });
        }, function(){
            deferred.resolve(results);
        });
    });

    return deferred.promise;
}

したがって、基本的には、データベースへの呼び出しを「約束する」ことを Q.defer するだけです。それから、私のkoaルートでは、これがあります:

app.get('/logs', function *(){
    var logs = yield db.getLogs();
    yield this.render('logs', {logs: logs});
});

私が抱えている問題は、リクエストがハングしているだけで、ブラウザが応答しないことです。本当に奇妙なのは、コンソールの後にステートメントを配置するとyield db.getLogs()、データベースからの結果がうまく表示されることです。ビューはそこにあり、すべてが機能するように見えますが、単に機能しません。どんな助けでも大歓迎です!

4

1 に答える 1