繁体   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