在调用我正在处理的项目中附加到模式的方法时,我遇到了一些困惑。我实际上是在访问数据库中的文档,并尝试将我存储的散列密码与用户在登录时提交的密码进行比较。但是,当我尝试比较密码时,找不到我附加到模式的方法对象的方法。它甚至不会给我一个错误,告诉我没有这样的方法。这是我在架构上设置方法的地方:
var Schema = mongoose.Schema;
var vendorSchema = new Schema({
//Schema properties
});
vendorSchema.pre('save', utils.hashPassword);
vendorSchema.methods.verifyPassword = utils.verifyPassword;
module.exports = mongoose.model('Vendor', vendorSchema);
我用作比较方法的函数是我创建的名为 verifyPassword 的实用程序函数,它保存在实用程序文件中。该函数的代码在这里:
verifyPassword: function (submittedPassword) {
var savedPassword = this.password;
return bcrypt.compareAsync(submittedPassword, savedPassword);
}
我尝试像这样验证密码:
var password = req.body.password;
_findVendor(query)
.then(function (vendor) {
return vendor.verifyPassword(password);
});
如果这有什么不同的话,我已经用蓝鸟承诺向猫鼬许诺了。我已经尝试了很多东西,但是当我尝试调用这个我认为我已经附加了架构的方法时,为什么什么也没发生,我找不到任何答案。任何帮助将不胜感激。