我正在为我的MongoDB
这是我的问题: 说我想从传入的请求中保存新信息,但我想确保没有重复的信息要保存。
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
}
})
}
})
}
})
到目前为止,这是我的方法,但我正在寻找一种有效的方式,因为我觉得这个连锁店会因某些条目而变得混乱和复杂。
有没有更简单的方法来实现此操作?
我认为问题的标题不适合我的问题,但任何编辑建议都将受到赞赏
答案 0 :(得分:0)
使用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,但我不确定错误消息是如此具有描述性。