Mongo DBからレコードを取得した後、comparePasswordメソッドを呼び出して、ユーザーが入力したパスワードとデータベースに格納されているパスワードを比較します。 レコードを印刷すると、すべてのデータが表示され、comparePassword this.passwordは未定義となります。MongooseでBcryptを使用しているときは、comparePasswordメソッドでthis.passwordが未定義です。の解き方?
User.findOne ({ username : req.body.username },
function(err, user) {
if (err) throw err;
console.log(user);
user.comparePassword(req.body.password, function(err, isMatch) {
if (err) throw err;
console.log('Password Match:', isMatch);
});});
方法:
UserCredentialSchema.methods.comparePassword = function(pwd, cb) {
bcrypt.compare(pwd, this.password, function(err, isMatch) {
console.log(this.password);
if (err) return cb(err);
cb(null, isMatch);
});};
'compareSync'はコールバックしません – robertklep