Я использую драйвер npm mongodb
с node.
У меня есть
collection.findOne({query}, function(err, result) {
//do something
}
Проблема в том, что если у меня нет результатов, то err
остается null
независимо от того, нашел я результат или нет. Как я могу узнать, что по этому запросу не было найдено никаких результатов?
Я также пробовал
info = collection.findOne(....
Но info
просто undefined
(это выглядело асинхронно, так что я не думал, что это путь к успеху в любом случае...)
Отсутствие записей не является условием ошибки, поэтому вы хотите искать отсутствие значения в result
. Поскольку все совпадающие документы всегда будут "истинными", вы можете использовать простую проверку if (result)
. Например,
collection.findOne({query}, function(err, result) {
if (err) { /* handle err */ }
if (result) {
// we have a result
} else {
// we don't
}
}
Все эти ответы устарели. findOne это устаревший. Последнюю 2.1 документации предлагается использовать
find(query).limit(1).next(function(err, doc){
// handle data
})
в настоящее время - с узел 8 - Вы можете сделать это внутри асинхронный
функция:
async function func() {
try {
const result = await db.collection('xxx').findOne({query});
if (!result) {
// no result
} else {
// do something with result
}
} catch (err) {
// error occured
}
}
collection.findOne({query}, function(err, result) {
if (err) { /* handle err */ }
if (result.length === 0) {
// we don't have result
}
}