だから私は 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()
、データベースからの結果がうまく表示されることです。ビューはそこにあり、すべてが機能するように見えますが、単に機能しません。どんな助けでも大歓迎です!