javascript - 使用 mysql 库咨询 javascript 和 nodejs
问题描述
我的代码中有下一个咨询
class FirstloginController {
async getToken(req, res, next) {
const { token } = req.params;
const {access_token} = req.query;
try {
const decoded = jwt.verify(access_token, process.env.JWT_ACCOUNT_ACTIVATION)
res.json({ message: "El acces token es valido", email: decoded})
const email_consulted = res.json({ email: decoded})
let select = await pool.query(`SELECT User_email FROM user WHERE User_email=${email_consulted}`)
if (select != "") {
const result = await pool.query(`INSERT INTO user (User_email) VALUES (${email_consulted})`);
}
} catch (err) {
next(err);
}
}
}
由于某种原因,它在插入时不起作用,并且在选择中我遇到下一个错误:(节点:14440)UnhandledPromiseRejectionWarning:错误:ER_BAD_FIELD_ERROR:'where 子句'中的未知列'undefined'
GET /firstlogin?access_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InJleWVzZUBncnVwb2ludmVyby5jb20iLCJpYXQiOjE1OTY3NTE1NDQsImV4cCI6MTU5NjgzNzk0NH0.ZefITNCD7cQ6ZvDMHiTEf4yc9UQI8BKDf9-839agDno 200 12.143 ms - 115
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
我不确定为什么会发生这种情况,但一切看起来都很好,¿您发现有什么问题吗?
解决方案
您正在向客户端 ( ) 发送两个响应res.json()
,这是不可能的。使第一个仅在令牌无效时执行:
class FirstloginController {
async getToken(req, res, next) {
const { token } = req.params;
const {access_token} = req.query;
let decoded
try {
decoded = jwt.verify(access_token, process.env.JWT_ACCOUNT_ACTIVATION)
} catch (err) {
res.json({ message: "El acces token es valido", email: decoded})
return // dont continue the function if token is not valid
}
try {
const email_consulted = res.json({ email: decoded}) // you are returning a success response but you havent finished the process yet. Usually the success is sent on the end of the process
let select = await pool.query(`SELECT User_email FROM user WHERE User_email=${email_consulted}`)
if (select != "") {
const result = await pool.query(`INSERT INTO user (User_email) VALUES (${email_consulted})`);
}
} catch (err) {
next(err);
}
}
}
推荐阅读
- java - Google Cloud SDK:由于 app.yaml 中缺少入口点而无法部署
- rxjs - 在内部 observable 上使用 takeUntil
- r - 创建 R 循环以从目录中读取 shapefile 并对每个文件执行区域统计
- bash - for循环中的bash stdout重定向
- r - 如何在R中对具有不同向量大小的时间序列数据进行聚类
- r - 基于多列汇总数据框
- sql - 登录存储过程 - SQL Server
- kubernetes - 具有多个作业计数器的 Kubernetes
- vim - 如何在 vim 中使用带有反斜杠的 :iabbr 后跟两个或多个字母作为缩写?
- javascript - Google Charts - Google Visualization arraytoDataTable 无法识别数值,除非“处理”