无法在Query._callback Node.js中读取未定义的属性“密码”

在执行护照和后端工作时,我得到了这个错误。 任何人都可以帮我弄清楚如何解决它?

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)functiondone(err) ,并且functionstream程继续。

然后检查是否有结果,调用函数done(null, false) ,然后stream程再次进行。

正确的做法是

 if (err) { return done(err) } if (results.length == 0) { return done(null, false); } 

注意上面的return语句。 它打破了这个callback函数内部的代码执行。

检查数据库中的表是否有一个名为“password”的字段