更新数据库mongodb,mongoose中的密码

时间:2018-08-28 20:43:08

标签: node.js mongodb mongoose

我有这条路线

router.patch("/me/update-password", authenticate, (req, res) =>{ let newPassword = _.pick(req.body, 'password'); const newP = newPassword.password; User.findByCredentials(req.user.username, req.user.password).then((user) => { user.password = newP; user.save().then(() => { res.send(user); }).catch((e) => { res.status(400).send(e); }); }); }); ///////////////////////////////////////////////////////////////////////////// UserSchema.statics.findByCredentials = function (username, password) { var User = this; return User.findOne({username}).then((user) => { if (!user) { return Promise.reject(); } return new Promise((resolve, reject) => { // Use bcrypt.compare to compare password and user.password bcrypt.compare(password, user.password, (err, res) => { if (res) { resolve(user); } else { reject(); } }); }); }); }; ////////////////////////////////////////////////////////////////// UserSchema.pre('save', function (next) { let user = this; if (user.isModified('password')) { bcrypt.genSalt(10, (err, salt) => { bcrypt.hash(user.password, salt, (err, hash) => { user.password = hash; next(); }); }); } else { next(); } });

我找到经过身份验证的用户的用户名和密码,然后我想发送一个新密码,并将其另存为newP。

我想更新密码哈希值并对其加盐,然后保存,因此我尝试使用方法user.save()对哈希值进行哈希处理和加盐。但是当我发送补丁请求时,它不会完成。
有人知道为什么吗?

我尝试了一切,但都被卡住了。

0 个答案:

没有答案