gpt4 book ai didi

mysql - 登录node js api后无法返回响应

转载 作者:行者123 更新时间:2023-11-29 15:43:18 26 4
gpt4 key购买 nike

类型错误:res.send 不是函数。

当我在用户成功登录后尝试返回响应时,出现此错误。谁能帮我解决这个错误。

这是我的代码:-

exports.login = function(req, res, next) {

let q = "SELECT * from users WHERE email = ?";
let query = sql.query(q,req.body.email, (error, res) => {

if (res.length > 0) {
bcrypt.compare(req.body.password, res[0].password, function(err, result){
if(err) {
console.log('password dost not match');
console.log("error: ", err);
result(null, err);
}
if(result) {
console.log('pasword match');
const jwtToken = jwt.sign({
email: res[0].email,
id: res[0].id
},
'secret',
{
expiresIn: '2h'
});
//tk = jwtToken;

return res.status(200).json({
error:0,
message:'user login successfully',
token:jwtToken
});


}
});

} else {
console.log('error commit');
console.log("error: ", error);
result(null, error);
}


});

};

最佳答案

只需将 res 从 sq.query 的回调更改为 dataResult,因为一旦您发送 res.send...那么在您的情况下可以肯定 res 是 sql 的 dataResult。

exports.login = function(req, res, next) {

let q = "SELECT * from users WHERE email = ?";
let query = sql.query(q,req.body.email, (error, dataResult) => {
if(error){
console.log('error commit');
console.log("error: ", error);
res.status(400).send({error});
}

if (dataResult && dataResult.length > 0) {
bcrypt.compare(req.body.password, dataResult[0].password,
function(err, result){
if(err) {
console.log('password dost not match');
console.log("error: ", err);
res.status(400).send({err});
}
if(result) {
console.log('pasword match');
const jwtToken = jwt.sign({
email: dataResult[0].email,
id: dataResult[0].id
},
'secret',
{
expiresIn: '2h'
});
//tk = jwtToken;

return res.status(200).json({
error:0,
message:'user login successfully',
token:jwtToken
});
}
}else{
res.status(400).send({error:'error occured no email
found'});
}

});
});
};

关于mysql - 登录node js api后无法返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346763/

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