[英]nodejs restify error — callback serving request treated as static function
我正在使用restify模块启动节点js web服务器。
server = restify.createServer();
server.post('/getData', DataManager.getData);
/getData
路径的处理程序如下所示: -
DataManager.prototype.getData = function(request, response, next) {
var body = JSON.parse(request.body);
var key = body.key;
callback = function(err, instance) {
if(!err && instance) {
response.send(instance);
}
else {
response.send('err');
}
return next();
}
MongooseModel.findOne(key, callback);
}
当我使用不同的有效负载向/getData
发送2个并发请求时,服务器抛出[Error: Can't set headers after they are sent.]
错误并且不响应第二个请求。
我正在寻找一种补救措施。
-
我认为,restify将DataManager.getData
视为静态函数。 而不是使用DataManager
的新对象向/getData
提供每个请求,而是使用它的单个静态实例。 虽然第一个请求仍然按照nodejs
执行,但第二个请求尝试发送响应,这就是nodejs can't set headers after they are sent
原因。 当我尝试拍摄两个顺序请求而不是并行请求时,我得出了这个结论,我的代码在这种情况下运行得很好。
你的回调有上下文问题!!!!
您应该为会话指定响应和下一个...您是否尝试使用var
声明它,它可以解决您的问题我认为...
var callback=.....
在其他情况下,您需要将response()和next()传递给它...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.