0

我的问题是我想更新已经存储在 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'

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

附加信息:

4

1 回答 1

0

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

于 2013-05-31T17:17:46.130 回答