MongoDB查找检查是否存在不按预期工作

时间:2016-03-13 03:52:05

标签: javascript node.js mongodb error-handling

我有一个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:

1 个答案:

答案 0 :(得分:0)

我没有测试它,但是看documentation,toArray返回数组,我假设当没有结果时会返回一个空数组[]?如果是这种情况,那么if([])实际上在javascript中返回true来解释它。