我正在使用 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
其视为静态函数。/getData
而不是使用它的新对象为每个请求提供服务,DataManager
而是使用它的单个静态实例。虽然第一个请求仍在执行nodejs
,但第二个请求尝试发送响应,这就是 nodejs 说的原因can't set headers after they are sent
。当我尝试拍摄两个顺序请求而不是并行请求时,我得出了这个结论,并且我的代码在这种情况下工作得很好。