gpt4 book ai didi

node.js - 如何使用 Mongoose 查询具有不同回调的多个条件

转载 作者:太空宇宙 更新时间:2023-11-04 01:49:34 25 4
gpt4 key购买 nike

我正在为我的 MongoDB 使用 mongoose

这是我的问题:假设我想保存传入请求中的新信息,但我想确保没有要保存的重复信息。

User.findOne({email : req.body.email},(err,email)=>{
if(err) return res.send('there is some errors');
else if (email) return res.send('this email has been used');
else {
User.findOne({username : req.body.username},(errR,username)=>{
if(errR) return res.send('there is some errors');
else if (username) return res.send('this username has been used');
else {
User.findOne({SID : req.body.SID},(ERR,SID)=>{
if(ERR) return res.send('there is some error') ;
else if (SID) return res.send('this SID is used before') ;
else{
//if we get here means that there was no duplicate information
}
})
}
})
}
})

这是我到目前为止的方法,但我正在寻找一种有效的方法,因为我认为对于更多条目来说,这个链会在某种程度上变得困惑和复杂。

有没有更简单的方法来实现这个操作?

我认为问题的标题不适合我的问题,但任何编辑建议将不胜感激

最佳答案

使用mongo $or operator

User.findOne({
$or: [
{email : req.body.email},
{username: req.body.email},
{SID : req.body.SID}
]
},
(err, user)=>{
if(err) return res.send('there is some errors');
else if (user.email === req.body.email) return res.send('this email has been used');
else if (user.username === req.body.username) return res.send('this username has been used');
//..
});

您还可以考虑使用unique index ,但我不确定错误消息是否具有如此描述性。

关于node.js - 如何使用 Mongoose 查询具有不同回调的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com