问题:“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小时内删除。
留言与评论(共有 0 条评论) |