Подтвердить что ты не робот

MongoDB Node найти, как не обрабатывать никаких результатов?

Im использует драйвер npm mongodb с node.

У меня

collection.findOne({query}, function(err, result) {
    //do something
}

Проблема в том, что у меня нет никаких результатов, err по-прежнему null найти результат или нет. Как я узнаю, что результатов поиска не найдено?

Я также пробовал

info = collection.findOne(....

Но info - это просто undefined (он выглядел асинхронно, поэтому я не думал, что это был способ пойти в любом случае..)

4b9b3361

Ответ 1

Не найти записи не является условием ошибки, поэтому вы хотите найти отсутствие значения в result. Поскольку любые совпадающие документы всегда будут "правдивыми", вы можете просто использовать простую проверку if (result). Например.

collection.findOne({query}, function(err, result) {
    if (err) { /* handle err */ }

    if (result) {
        // we have a result
    } else {
        // we don't
    }
}

Ответ 2

Все эти ответы ниже устарели. findOne устарел. В последней документации 2.1 предлагается использовать

find(query).limit(1).next(function(err, doc){
   // handle data
})

Ответ 3

Просто как:

collection.findOne({query}, function(err, result) {
    if (!result) {
        // Resolve your query here
    }
}

Ответ 4

Если результат равен нулю, то mongo не нашел документ, соответствующий вашему запросу. Попробовали запрос из оболочки mongo?

Ответ 5

collection.findOne({query}, function(err, result) {
   if (err) { /* handle err */ }

   if (result.length === 0) {
    // we don't have result
   }
}