簡體   English   中英

調用模式方法而無需使用Nodejs / Mongoose創建新的Model對象

[英]Call schema method without create a new Model object with Nodejs/Mongoose

我的問題是我想更新已經存儲在MongoDB上的用戶密碼,而不能調用User的方法。 讓我顯示代碼:

用戶架構:

userSchema = new Schema({ ... });

userSchema.methods.setPassword = function (passwordPlainText) {
    this.passwordHash = createHash(passwordPlainText, this.salt);
};

module.exports = mongoose.model('User', userSchema);

如果我這樣做,它會很好:

user = new User();
user.setPassword('foobar');

但是,如果我想做這樣的事情:

User.findOne({email: req.param('email')}, function (err, user) {
    user.setPassword('foobar');
});

它輸出:

TypeError: Object #<Object> has no method 'setPassword'

從數據庫中檢索用戶后,有人可以幫我找到一種調用這些模式方法的方法嗎?

附加信息:

發現了問題,似乎我在會話中保存的用戶未保留該用戶的架構方法。 解決了僅在會話中保存userId的問題,調用了另一個User.findOne(id),然后調用setPassword方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM