我有一個Account
模式,與貓鼬定義,我設置的承諾與藍鳥:如何處理使用Bluebird的使用Mongoose返回的諾言?
var mongoose = require('mongoose');
mongoose.Promise = require('bluebird');
我設計這種模式的模型方法:
accountSchema.methods.validPassword = function(password) {
return bcrypt.compareSync(password, this.password);
}
所以我有一個方法這將試圖找到一個用戶,並檢查密碼匹配:
function login (email,password) {
return Account.findOne({email: email}).then(function (user) {
console.log(user);
user["match"] = user.validPassword(password);
console.log(user);
return user.validPassword(password);
});
}
什麼是真正奇怪的是第二個console.log
不會顯示該對象的任何match
屬性。
這裏我的意圖是返回找到用戶併爲您的密碼匹配的承諾,但是當我調用登錄:
login("email","password").then(function(user){...})
用戶不具有匹配屬性,我怎麼可能實現這一目標?
這就是我正在做的 – diegoaguilar
我需要在控制器上使用登錄功能,所以它確實需要返回* something *,這就是爲什麼我試圖返回promise。 即使進行了最後編輯,您的答案也是相同的,我已經在做 – diegoaguilar
爲了清晰起見,我加入了回覆後表示同意。 @diegoaguilar如果您正在打電話,您不希望在FindOne呼叫前返回。 –