我的问题是我想更新已存储在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'
有人可以帮我找一种方法在从数据库中检索用户后调用这些模式方法吗?
其他信息:
答案 0 :(得分:0)
发现问题,似乎我在会话中保存的用户没有为用户保留架构方法。解决了在会话中仅保存userId,调用另一个User.findOne(id)然后调用setPassword方法的问题。