我有一个MongoDB查询我在下面的NodeJS中运行,如果查询返回null,则不应该运行(doc):
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)
它返回null,就像它应该的那样,如果我针对实际存在的项运行它,它会像它应该的那样返回{ "_id" : ObjectId("12345689randomnumber") }
。 .toArray
的某些内容正在屠杀我的{$exist:true}
错误句柄。
我如何"错误处理"这在一个查询中,而不必在查询之外写一个if else语句?谢谢c:
答案 0 :(得分:0)
我没有测试它,但是看documentation,toArray返回数组,我假设当没有结果时会返回一个空数组[]
?如果是这种情况,那么if([])
实际上在javascript中返回true来解释它。