在 Node 应用程序的后端,当另一个用户已经注册了相同的电子邮件时,我想进行电子邮件检查。当我使用 POST 方法时,它已经工作得很好,但是当使用 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;
}
}
正如我们在上面的代码中看到的,在:
id: !req.body.id
我尝试过类似考虑ID与被修改的用户不同的方法,但它不起作用,应用程序同样接受重复的电子邮件!没有 POST 是一个奇迹,但有了 PUT 就不会了。
使用 Node 或已经知道如何解决问题的人可以帮助我吗?
提前非常感谢您!
最佳答案
使用$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})
关于javascript - 当另一个用户已经注册了相同的电子邮件时,如何在 Put(更新)方法中进行电子邮件重复检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57272598/