gpt4 book ai didi

node.js - res.send() - 发送后无法设置标题

转载 作者:搜寻专家 更新时间:2023-10-31 23:37:06 24 4
gpt4 key购买 nike

我正在使用 Node js 创建 API,但我遇到了多个参数 api 的问题。我从 couchbase 获得了多份文件。 API 返回了多个 JSON 文档,但之后程序崩溃了。我只调用了一次 res.send()。我不明白我哪里出错了。这是我的 API:

router.get("/employee/collectinsert/:_startdate/:_enddate", function(req, res, next){

var startDate = moment(req.params._startdate);
var endDate = moment(req.params._enddate);
var daysOfYear = [];
for(var date = moment(startDate); date.diff(endDate,'days') < 1; date.add(1, 'days')){
daysOfYear.push(formatDate(date));
}

bucket.getMulti(daysOfYear,function(err, results){
if(err) throw err;

for(var key in results) {
if(results.hasOwnProperty(key)) {
if(results[key].error) {
console.log("`" + key + "`: " + JSON.stringify(results[key]));
}
res.send(results);
}
}
process.exit(0);
});

});

我收到这个错误:

Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:357:11)
at ServerResponse.header (C:\Users\ekaplan\Desktop\dashboard\node_modules\express\lib\response.js:730:10)
at ServerResponse.send (C:\Users\ekaplan\Desktop\dashboard\node_modules\express\lib\response.js:170:12)
at C:\Users\ekaplan\Desktop\dashboard\api\employee.js:53:21
at C:\Users\ekaplan\Desktop\dashboard\node_modules\couchbase\lib\bucket.js:1280:9

最佳答案

您在 for 循环中多次调用 res.send()。

将其移出循环:

bucket.getMulti(daysOfYear,function(err, results){
if(err) throw err;

for(var key in results) {
if(results.hasOwnProperty(key)) {
if(results[key].error) {
console.log("`" + key + "`: " + JSON.stringify(results[key]));
}
}
}

res.send(results); // called once when for loop has finished
});

关于node.js - res.send() - 发送后无法设置标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44671191/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com