Mongoose найти, какая часть $ или была вызвана

Telion спросил: 28 марта 2018 в 04:20 в: node.js

Я не знаю, как сформулировать этот вопрос. Но у меня есть похожий код:

User.findOne({$or:[ {'local.email':email}, 
                    {'local.name': req.body.name} ]}, function(err, existingUser) {

Есть ли способ узнать, был ли пользователь найден по электронной почте или по имени? Потому что мне нужно сообщить пользователям в регистрационной форме, что либо имя пользователя, либо письмо уже принято. Или я должен выполнить 2 запроса для такой задачи?

1 ответ

Есть решение
JohnnyHK ответил: 28 марта 2018 в 07:48

Нет, просто проверьте документ existingUser, который вы вернули, и посмотрите, какой из них соответствует:

User.findOne({$or:[ {'local.email':email}, 
                    {'local.name': req.body.name} ]}, function(err, existingUser) 
{
    if (existingUser) {
        if (existingUser.local.email == email) {
            // email matched
        }
        else {
            // name matched
        }
    }
George Bailey ответил: 28 марта 2018 в 08:02
это было то, что я был на высшем посту: p Вы победили меня на 30 секунд - :)
JohnnyHK ответил: 28 марта 2018 в 08:27
Конечно, я сидел там пару часов, думая ... кто-то другой, вероятно, ответит на это ... прежде чем я просто продолжил и ответил ;-)
George Bailey ответил: 28 марта 2018 в 08:30
Хахаха. это было приятно: р