2016-03-13 4 views
0

я запрос MongoDB Я бегу в NodeJS ниже, что не должен работать (DOC), если запрос возвращает нуль:MongoDB Найти проверить, существует не работает, как ожидалось

collection.find({ name: "HOSTNAME_1" }, {$exists: true}).sort({ _id : -1 }).limit(1).toArray(function(err, doc){ 
    if (doc) { 
    res.write("event: add" + '\n'); 
    res.write("data: " + JSON.stringify(doc).substr(1,JSON.stringify(doc).length-2) + "\n\n"); 
    } else if (!doc) { 
    console.log("No Entry Found!"); 
    } 
}); 

почему-то все еще запускает функцию doc и выводит ее, когда я ее скручиваю.

event: add 
data: 

Если удалить .toArray так мой запрос выглядит следующим образом:

db.clients.find({ name: "HOSTNAME_1" }, {$exists: true}).sort({ _id : -1 }).limit(1) 

возвращает нуль, как предполагается, и если я запускаю его против элемента, который фактически делает существует она возвращает { "_id" : ObjectId("12345689randomnumber") } как это предполагается. Что-то с .toArray уничтожает мою ошибку {$exist:true}.

Как я могу «обработать ошибку» в одном запросе без необходимости писать оператор if else вне запроса? Спасибо, c:

ответ

0

Я не тестировал его, но смотрел на documentation, toArray возвращает массив, который, как я полагаю, возвращает пустой массив [], когда результата нет? Если это так, то if([]) действительно возвращает true в javascript, который объясняет это.

+0

Я видел это, когда я запустил его внутри Монго, но я ничего не думал об этом. Мой дескриптор ошибки должен основываться на if (doc) = [] Я полагаю. Спасибо, что указали на это Билл! – KILLADELPHIA

Смежные вопросы