我正在努力添加一个“忘记密码”功能,我正面临着一个我自己无法解决的问题。
在我的mongoose findOneAndUpdate函数中,我注意到它更新了一个条目,即使该条目不存在。
这是我的功能:
router.put('/resetpass', (req, res) => {
const {resetPassLink, password} = req.body;
Users.findOneAndUpdate({resetPassLink : resetPassLink}, {$set : {password : password, resetPassLink: ''}}, function(error, feedback) {
if (error) throw error;
return res.send(feedback);
})
})
This post建议提出问题的用户遇到问题是因为他的功能没有产生任何错误,但是,我的确会产生错误。
我不确定我的代码中出了什么问题。一旦它注意到没有resetPassLink字段及其正在寻找的值,它是否应该抛出错误?
我究竟做错了什么,我该如何解决?
你需要改进你的查询,如下所示:
router.put('/resetpass', (req, res) => {
const {resetPassLink, password} = req.body;
Users.findOneAndUpdate({resetPassLink : resetPassLink, resetPassLink:
{$exists: true}, password: {$exists: true}}, {$set :
{password : password, resetPassLink: ''}}, (error, feedback) => {
if (error) {
console.log(error)
}; else {
return res.send(feedback);
}
});