как запросить несколько условий с различным обратным вызовом с помощью мангуста - PullRequest
0 голосов
/ 08 мая 2018

Я работаю с мангустом для моего 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
                    }
                })
            }
        })
    }
 })

Пока это мой подход, но я ищу эффективный путь, потому что я думаю, что эта цепочка будет несколько запутанной и сложной для большего количества записей.

Есть ли более простой способ реализации этой операции?

Я думаю, что заголовок вопроса не подходит для моего вопроса, но любые предложения по редактированию будут оценены

1 Ответ

0 голосов
/ 09 мая 2018

Используйте Монго $ или оператор

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');
    //..
});

Вы также можете рассмотреть возможность использования уникального индекса , но я не уверен, что сообщение об ошибке будет настолько наглядным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...