MongoDB Node找到了如何处理没有结果?

Aks*_*hat 41 mongodb node.js

我使用mongodb节点的npm 驱动程序.

我有

collection.findOne({query}, function(err, result) {
    //do something
}
Run Code Online (Sandbox Code Playgroud)

问题是我没有任何结果,err仍然null是我是否找到结果或不是.我怎么知道查询没有找到结果?

我也试过了

info = collection.findOne(....
Run Code Online (Sandbox Code Playgroud)

但这info只是undefined(它看起来是异步的,所以我不认为这是要走的路..)

jma*_*777 69

没有找到任何记录并不是一个错误条件,所以你想要寻找的是缺少一个值result.由于任何匹配的文件将始终是"真实的",您只需使用简单的if (result)检查.例如,

collection.findOne({query}, function(err, result) {
    if (err) { /* handle err */ }

    if (result) {
        // we have a result
    } else {
        // we don't
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 注意(对于遇到此答案的任何人),不再弃用findOne() (16认同)
  • findOne 已弃用 (2认同)

Ste*_*nko 10

以下所有这些答案都已过时.findOne已被弃用.最新的2.1文档建议使用

find(query).limit(1).next(function(err, doc){
   // handle data
})
Run Code Online (Sandbox Code Playgroud)

  • ChrisV对我的回答前面提到这一点,但任何人碰到这个即将到来,请注意,[`findOne()`](https://mongodb.github.io/node-mongodb-native/markdown-docs/queries.html# find-first-occurence-with-findone)不再被弃用. (6认同)

sos*_*dra 5

简单来说:

collection.findOne({query}, function(err, result) {
    if (!result) {
        // Resolve your query here
    }
}
Run Code Online (Sandbox Code Playgroud)