当另一个用户已经注册了相同的电子邮件时,如何在put(更新)方法中进行电子邮件重复检查



在节点应用程序的后端,我想在其他用户已经注册相同的电子邮件时进行电子邮件检查。当我使用帖子方法时,它已经运行良好,但是当使用put进行更新时,当前例行程序将用户自己的电子邮件以重复的方式更改(因为他已经在数据库中注册(,我不希望这样做甚至没有任何意义,我希望在更新中,它不会被视为我正在更改的用户的电子邮件,而是要检查是否有其他具有同等电子邮件的用户。

我尝试了以下代码:

chekEmailDuplicate = (req, res) => {
   User.findOne({//Tenta localizar algum usuário
            where: {//onde
                   id: !req.body.id,
                email: req.body.email
            }
        }).then(user => {
            if (user) {
                res.status(400).send("Fail -> Email is already in use!");
                return;
            }
}

正如我们在上面的代码中看到的,in:

id: !req.body.id

我尝试了类似于被修改的用户不同的ID之类的东西,但是它不起作用,应用程序接受重复的电子邮件相同!没有帖子是一个奇迹,但没有帖子。

一个在节点或已经知道如何解决的人可以帮助我吗?

非常感谢您!

使用$ ne

User.findOne({
  where: {
    id: {$ne: req.body.id}
    email: req.body.email
  }
}).then(user => {
  if (user) {
    res.status(400).send("Fail -> Email is already in use!");
    return;
  }
});

User.findOne({_id: {$ne: req.body.id}, "email": req.body.email})

最新更新