Javascript MongoDB查找检查是否存在未按预期工作的问题

Javascript MongoDB查找检查是否存在未按预期工作的问题,javascript,node.js,mongodb,error-handling,Javascript,Node.js,Mongodb,Error Handling,我在下面的NodeJS中运行一个MongoDB查询,如果查询返回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.st

我在下面的NodeJS中运行一个MongoDB查询,如果查询返回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,如果我对实际存在的项运行它,它会像预期的那样返回
{“\u id”:ObjectId(“12345689randomnumber”)}
。带有
.toArray
的东西正在破坏我的
{$exist:true}
错误句柄


如何在一个查询中“错误处理”,而不必在查询之外编写if-else语句?谢谢c:

我还没有测试它,但是看看toArray返回的数组,我假设在没有结果的情况下会返回一个空数组
[]
?如果是这样的话,
If([])
在javascript中实际返回true,这就解释了它。

我在Mongo中运行它时看到了这一点,但我没有想到这一点。我的错误句柄需要以if(doc)=[]为基础。谢谢你指出这张账单!