【发布时间】:2017-02-08 15:11:10
【问题描述】:
我编写了一个极简服务器来管理 REST 服务。唯一的编码路由应该是从 mongo 检索数据,然后将其发送到客户端。代码如下。
var kr = require('koa-route');
var koa = require('koa');
var app = koa();
var MongoClient = require("mongodb").MongoClient;
var events = function * ()
{
var _this = this;
MongoClient.connect("mongodb://localhost/eventdata", function(error, db) {
if (error) throw(error);
console.log("Connecté à la base de données");
db.collection('events').find().toArray(function(err, array)
{
console.log('returning %d objects', array.length);
db.close();
_this.body = {eventsArray : array};
});
});
}
app.use(kr.get('/events', events));
app.listen(3000);
Koa 是 1.2.4 版本
当我尝试访问它时,我收到错误消息“发送后无法删除标头”。我设法理解程序(有点)在 find() 结束之前完成发送回响应。所以当 _this.body = { ... } 被调用时,这会导致错误。
现在的问题是:如何解决这个问题? 刚开始练习Koa,所以有很多我不习惯的东西。
我测试了这里提出的解决方案:Can't remove headers after they are sent,但它不起作用。我收到以下错误消息:
eventsArray = yield db.collection('events').find({})
^^
SyntaxError : unexpected identifier
提前感谢您的帮助。
【问题讨论】: