Так что я возился с Koa.js и генераторами, просто собрал простой сайт для демонстрационных целей. Я использую sqlite с node-sqlite3
и 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, чтобы «обещать» вызов базе данных. Затем, в моем маршруте коа, у меня есть это:
app.get('/logs', function *(){
var logs = yield db.getLogs();
yield this.render('logs', {logs: logs});
});
У меня проблема в том, что запрос просто зависает, браузер никогда не получает ответа. Что действительно странно, так это то, что если я поставлю оператор console.log после yield db.getLogs()
, я прекрасно увижу результаты из базы данных. Вид есть, вроде все должно работать, но просто не работает. Любая помощь будет мне очень признательна!
yield
. - person   schedule 23.12.2014