在实施通行证并为其后端工作时,出现了此错误。谁能帮我找出解决方法?
TypeError:无法读取未定义的属性“密码”
在Query._callback(/Users/oscarstein/Documents/Programering/express-cc/app.js:76:32)
使用以下代码:
passport.use(new LocalStrategy(
function(username, password, done) {
console.log(username);
console.log(password);
const db = require('./db');
db.query('SELECT id, password FROM users WHERE username = ?', [username], function(err, results, fields){
if (err) {done(err)};
if (results.length == 0) {
done(null, false);
}
const hash = results[0].password.toString();
bcrypt.compare(password, hash, function(err, response){
if (response == true) {
return done(null, {user_id: results[0].id});
} else {
return done(null, false);
}
});
})
}
));
最佳答案
考虑这些代码行
if (err) {done(err)};
if (results.length == 0) {
done(null, false);
}
它检查是否存在错误,然后执行功能
done(err)
,然后功能流程继续进行。然后,它检查是否有结果,调用函数
done(null, false)
,然后流程继续进行。正确的做法是
if (err) {
return done(err)
}
if (results.length == 0) {
return done(null, false);
}
上面的通知返回声明。它将中断此回调函数内部的进一步代码执行。