【发布时间】:2016-11-21 20:38:44
【问题描述】:
我从我的服务器收到不一致的结果。有时会发送正确的响应,有时我会收到错误
发送后无法删除标头
使用 Node.js、Koa.js 和 Mongoose
router
.get('/events/', function* getEvent() {
let eventList = [];
yield Event.find({}, (error, events) => {
if (error) {
this.response.body = 'Unable to get events.';
this.status = 404;
return;
}
eventList = events;
eventList.sort((first, second) => {
// sort implementation
});
this.response.body = eventList;
this.status = 200;
});
});
【问题讨论】:
-
这通常是由不一致的 res.end() 调用引起的。如果不是这样,您能否提供更多上下文或代码?
-
这有可能是因为您处理错误的方式(您也可以为此添加代码吗?)。此外,您的
yield似乎是多余的,因为您还将回调传递给Event.find()。 -
@safaiyeh 对,但关注错误本身,它表示正在发送标头,然后尝试修改它们。至少对我来说,这表明调用要么被打了两次,要么你正在触发这个调用,而不是结束响应,并触发另一个与之冲突的 get/post
-
@safaiyeh 看起来不错。您没有使用可能导致错误的其他中间件?
-
嗯,你正在使用路由器中间件。
标签: javascript node.js mongoose koa