调用模式方法而不使用Nodejs / Mongoose创建新的Model对象

时间:2013-04-20 14:50:32

标签: node.js mongodb express 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'

有人可以帮我找一种方法在从数据库中检索用户后调用这些模式方法吗?

其他信息:

1 个答案:

答案 0 :(得分:0)

发现问题,似乎我在会话中保存的用户没有为用户保留架构方法。解决了在会话中仅保存userId,调用另一个User.findOne(id)然后调用setPassword方法的问题。