如何解决仅当mongoDB数据库中不存在电子邮件时才更新
我正在使用此路由允许用户更改其电子邮件地址。但是,它当前允许他们添加另一个用户已经使用的电子邮件地址。如何防止这种情况发生(在这种情况下发送警报)。另外,我想知道.findOneAndUpdate()在这里是否合适,因为它在找到第一个之后可能会停止。
谢谢
app.post('/changeUserEmail',function (req,res) {
db.collection("userDB").findOneAndUpdate(
{username: req.user.username},{ $set: {email: req.body.newEmail}},{new: true},(err,data) => {
if (err) {
console.log(err);
}
console.log(null,data);
}
)
res.render(process.cwd() + "/views/options",{
username: req.user.username,email: req.body.newEmail,alert: "Email changed"
});
});
解决方法
您可以先检查电子邮件是否存在,然后再进行更新
app.post("/changeUserEmail",async function(req,res) {
let { username } = req.user;
let { newEmail } = req.body;
let emailExist = await db.collection("userDB").findOne({ email: newEmail });
if (emailExist)
return res.render(process.cwd() + "/views/options",{
alert: "Email already exists"
});
await db
.collection("userDB")
.findOneAndUpdate(
{ username },{ $set: { email: newEmail } },{ new: true }
);
res.render(process.cwd() + "/views/options",{
username,email,alert: "Email changed"
});
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。