node.js问题http.js:690 throw new Error('Can\'t set headers after they are sent.');

update一条数据

Assessment.update({_id: req.params._id}, {$set: parameters}, function(err) {
if (err){
return next(err);
} else {
if (req.params.status == 5) {//评估结果为:拒绝,修改老人状态为“评估中”,并返回给对应客服,让其修改本次评估
customer_status = 6;
} else if (req.params.status == 2) {//评估结果为:通过,修改老人状态为“资料已审核”,此时,任何客服都可以进行下次评估
customer_status = 2;
} else {
res.send({result: "success"});
return next();
}

Customer.update({account_id: account_id}, {$set: {status: customer_status}}, function(err) {
if (!err){
res.send({result: "success"});
} else {
var errObj =err;
if (err.err){
errObj =err.err;
}
return next(newrestify.InternalError(errObj));
}
==============================
update多条数据
原代码不变
for(var i =0;i<ids.length;i++){
Assessment.update({_id: ids[i]}, {$set: parameters}, function (err) {


。if (err) {
return next(err);
}
else {
res.send({result: "success"});
return next();
}Customer.update({account_id: arr[i]}, {$set: {status: customer_status}}, function (err) {
if (!err) {
res.send({result: "success"});
return next();
}
update多条就报这个错误,该怎么改呢?哪的错误?
http.js:690
throw new Error('Can\'t set headers after they are sent.');

res.send({result: "success"});
return next(); 重复了,res.send里面就包含了res,end,当你在NEXT()是响应都结束了追问

我把两个方法下面return.next()都删掉 依然报错。

追答

Assessment.update里面是不是包含Customer.update

Assessment.update是如果走到这一步
else {
res.send({result: "success"});}这时,res.send后响应就结束了,然后你再跑Customer.update中if (!err) {
res.send({result: "success"});
return next();
}这一步,肯定会报错的

温馨提示:内容为网友见解,仅供参考
无其他回答

Can't set headers after they are sent.怎么解决
“Can’t set headers after they are sent.” => “不能发送headers因为已经发送过一次了” => 在处理HTTP请求时,服务器会先输出响应头,然后再输出主体内容,而一旦输出过一次响应头(比如执行过 res.writeHead() 或 res.write() 或 res.end()),你再尝试通过 res.setHeader() 或 res.wri...

nodejs做http请求转发,解决js跨域问题(二)
我们可以在nodejs这一层加入请求修改User-Agent,不仅仅可以在nodejs这一层代理修改User-Agent,还可以修改request和response 例如 下面就修改了request的headers 添加了mytest=0000000000000和User-Agent= mytest 也修改了request里面的body给body添加了 Type : 'jpg' 以及修改了 FileName : '2.jpg'一定...

nodejs之http模块
consthttp=require('http');constagent=newhttp.Agent({keepAlive:true,\/\/开启长连接,因为每一次请求服务器,都要创建一次连接,完成后关闭,所以开启keep-live后会使得连接持续有效maxSockets:10,\/\/最大的套接字(socket)数量keepAliveMsecs:1000,\/\/指定Tcp的初始延迟时间maxTotalSockets:10,\/\/主机允许的最大套接字...

node.js-路由、中间件、mysql
app?=?express()app.get('\/',?(req,?res)?=>?{???\/\/?1.人为抛出一个错误,一旦有错后面的响应就不会执行了???throw?new?Error('服务器内部发生错误')???res.send('我不能执行出来')})\/\/?2.错误中间件app.use((err,req,res,next)?=>?

node.js模拟浏览器发送post请求,遇到问题了
一般post的话就不应该用在url里的querystring传数据吧,post应该是建立连接之后用req.write来写数据。

Node.js的HTTP与事件初步介绍&怎么查看API
Node.js的HTTP与事件初步介绍&如何查看API(入门篇)接着第一篇来说,当然,同样约定下面简称为Node(个人认为比较标准的说法),标题用node.js主要是为了方便阅读。同样,大牛可以略过这篇文章啦!现在,主要说3个问题:(1)接着第一篇介绍完Http其他部分(2)事件模型的介绍(3)如何查看API 文档.首先...

如何使用node.js实现获取微信用户授权(附代码)
error: function(error) { console.log(error) }, }) }下面是node后台代码const config = require('.\/config') \/\/ 引入配置文件\/\/ 通过 code 获取用户的 openId 和 access_tokenconst getOpenIdAndAccessToken = code => { let params = { appid: config.appId, secret: config.appSecret, code, grant...

node.js中文文档?
node.js是有windows实现版本的,请到它的官网node.org下载。有两种exe和msi都可以使用。 下载后安装和正常软件安装一样。使用方法: 在开始菜单打开,选择Node.jscommandprompt,它自动帮你加入了环境变量,直接可以使用node和npm命令。 node命令:node(空格)js程序,请用绝对地址。其他参数可以用node-h查看,有详细的解释...

nodejsfs模块(nodejsfs模块)
这样一来,就可以正确的引入nodeglobal文件夹下的模块了。nodejs内置模块有哪些 一、Express框架 前面的章节已经介绍过了,可以使用npm来安装node.js模块。具体操作请参照以前写的nodejs概论。 Express是一个nodejs的web开源框架,用于快速的搭建web项目。其主要集成了web的http服务器的创建、静态文本管理、服务器URL地址...

NodeJs全栈创建多文件断点续传
NodeJs全栈创建多文件断点续传文章涉及的源代码在GitHub上,查看源代码。项目安装这是一个Node项目,可以使用常规的方式进行设置,如果已经有一个项目,则可以继续执行该项目,完全没有问题。如果是全新开始,请执行

相似回答