我有一个使用一些属性创建的用户模型,这些属性稍后在用户激活后被删除。我注意到这些属性在用户发起忘记密码请求后重新出现。
当我单步执行代码(它是一个快速应用程序)时,我在忘记密码控制器中有一个 User.findOne 请求,该请求返回仍然具有已删除属性的用户文档,因此当我保存密码重置令牌。
function forgotPassword(req, res, next) {
const username = req.body.username;
// Generate token
const token = uuid.v4();
// Find the user
User.findOne({ username: username }, function(err, user) {
if (err) {
return next(err);
}
// At this stage user also has the properties that
// were previously deleted when I inspect it
user.resetToken = token;
user.save(function(err, savedUser, numAffected) {
// So resetToken gets saved but also the previously deleted properties
...
});
Run Code Online (Sandbox Code Playgroud)
我在数据库中验证了它们在用户激活时被删除,然后在忘记密码请求后重新出现。
Mongoose 对 findOne 请求是否有某种缓存? …