如下是一个路由回调函数:
exports.login = (req, res) => {
const userinfo = req.body
const sql = 'select * from ev_users where username=?'
db.query(sql, userinfo.username, (err, results) => {
if(err){ return res.cc(err) }
if(results.length !== 1 ){ return res.cc('登陆失败!') }
})
// 判断密码是否正确
//核心实现思路:调用 bcrypt.compareSync(用户提交的密码, 数据库中的密码) 方法比较密码是否一致
// 返回值是布尔值(true 一致、false 不一致)
// 拿着用户输入的密码,和数据库中存储的密码进行对比
const compareResult = bcryptjs.compareSync( userinfo.password, results[0].password)
if ( !compareResult ) return res.cc('登陆失败!')
// TODO 登陆成功,生成 Token 字符串
res.send('login OK')
}
终端运行没问题
然而用Postman请求回来的数据:
{
"status": 1,
"message": "results is not defined"
}
是这样的。
即使是输入的密码错误也响应如上一串,密码改对也是这个结果。
尝试过重新注册一个username和password,数据库里也能接收到,但响应结果还是"results is not defined"。
说明res.cc这个方法里面没有把那个message属性的值传递进去,检查下。望采纳
很明显是你的查询语句查询的数据出了问题
先看看sql有没有问题,再排查一下箭头指的几个地方是否能正常拿到值