Im使用npm mongodb驱动程序和 node .

我有

collection.findOne({query}, function(err, result) {
    //do something
}

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

我也试过了

info = collection.findOne(....

但是info只是undefined(它看起来是异步的,所以我认为这不是一个好办法.)

推荐答案

找不到任何记录并不是一种错误情况,因此您要查找的是result中缺少一个值.因为任何匹配的文档都是"真实的",所以您只需使用简单的if (result)判断即可.例如.,

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

    if (result) {
        // we have a result
    } else {
        // we don't
    }
}

Node.js相关问答推荐

nest js控制器方法调用两次

@nuxtjs/站点 map 错误提示:找不到包';NitroPack';

Mongoose查询-如何根据当前查找ID获取其他集合并将其插入到当前查找中?

如何呈现ejs.renderFile中包含的子模板?

如何获取mongoose中单个id数据的记录

动态设置元数据,无需重复请求 NextJS 13

Amplify 部署的应用程序出现TypeError: handler is not a function错误,但它在本地运行

nyc 代码覆盖不适用于 NodeJs Express 服务器

我正在try 在公共目录中使用 Express.js 项目部署 Angular 静态构建

firebase/messaging 不提供名为 getToken 的导出

每秒从套接字传来的数据有哪些存储方式?

无法关闭 node.js 中的mongoose 连接

cURL 和 shell 任务

解决并行保存到 mongodb

Handlebars:访问已被拒绝解析来自的属性,因为它不是其父级的自己的属性

我们如何或可以通过 npm 和 Meteor 使用 node 模块?

AWS Kinesis 中的分区键是什么?

Puppeteer 错误:未下载 Chromium 修订版

JavaScript 异步编程:promise 与生成器

为什么 Node.js 被命名为 Node.js?