Javascript MongoDB查找检查是否存在未按预期工作的问题
我在下面的NodeJS中运行一个MongoDB查询,如果查询返回null,则该查询不应该运行(doc):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
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)=[]为基础。谢谢你指出这张账单!