Mongoose findOneAndUpdate更新不存在的条目

问题描述 投票:0回答:1

我正在努力添加一个“忘记密码”功能,我正面临着一个我自己无法解决的问题。

在我的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字段及其正在寻找的值,它是否应该抛出错误?

我究竟做错了什么,我该如何解决?

node.js mongoose mongoose-schema
1个回答
1
投票

你需要改进你的查询,如下所示:

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);
}
});
© www.soinside.com 2019 - 2024. All rights reserved.