11 “Cannot set headers after they are sent to the client”解决方案

阅读: 评论:0

11 “Cannot set headers after they are sent to the client”解决方案

11 “Cannot set headers after they are sent to the client”解决方案

11. “Cannot set headers after they are sent to the client”解决方案----关于query数据库异步查询

问题:“Cannot set headers after they are sent to the client”报错

开始查询答案的时候,网上给的答案全都是清一色的”多个res.send导致出错”,很容易找到解决方案即“关于加return解决”。

贴上自己的错误代码:

const express = require("express")
const db=require("../db/index")
//引入对密码进行加密
const bcrypt=require('bcryptjs')User = (req,res)=>{const userinfo=req.bodyconst sql=`select * from ev_users where username=?`db.query(sql,[userinfo.username],(err,results)=>{/*我的查询代码*/}const sql_insert=`insert into ev_users set ? `db.query(sql_insert,info,(err,results)=>{/*我的第二段查询代码*/}
}

代码结构大概是这个样子,当然也都对res.send都做了return处理,但是仍然报错,这个错误花费了我一下午的时间,相信也有小伙伴会在这里卡着。

然后。。。。在一篇博客里面看到了异步这个词,突然想起来是否是因为自己的查询是在函数中是并列的。回头一看,还真是,并列查询会导致多个进程的创建,因此可能有多个send。。。。。

对此,我首先想到的是sleep,后来感觉自己是真的傻。。。。

当然,正确的解决方案是对查询进行嵌套。。。

附上代码

const express = require("express")
const db=require("../db/index")
//引入对密码进行加密
const bcrypt=require('bcryptjs')User = (req,res)=>{const userinfo=req.bodyconst sql=`select * from ev_users where username=?`db.query(sql,[userinfo.username],(err,results)=>{/*我的查询代码*/const sql_insert=`insert into ev_users set ? `db.query(sql_insert,info,(err,results)=>{/*我的第二段查询代码*/}}
}

问题解决!!!!

本文发布于:2024-02-02 10:36:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170684139143239.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:解决方案   set   client   headers
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23