繁体   English   中英

nodejs restify error - 作为静态函数处理的回调服务请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM