我有一个 node .使用mongodb本机驱动程序的js应用程序.

Select :

  • mongoose-promises查询已弃用,它强制使用模式模型,这对我的应用程序来说有点开销.
  • mongoist——据称很棒,因为它是基于async/await构建的,并且完全promise ,但与mongodb的SSL连接错误和糟糕的文档记录——让我远离了这个解决方案.

我成功以优雅的方式实现的唯一解决方法是使用callback-promiseNPM包将mongodb驱动程序API转换为完全promise .

对于优雅的高性能方式有什么新 idea 吗?

推荐答案

由于所有答案都缺少一些位(捕捉块,判断客户机是否为null),所以我提出了自己的解决方案.使用Mongo服务器v4进行测试.0.7和 node JS驱动程序3.2.2.

请注意,这个示例是一个控制台程序,我们在finally块中关闭与服务器的连接.在web应用程序中,连接被重用.

const MongoClient = require('mongodb').MongoClient;

const url = 'mongodb://localhost:27017';

async function findOne() {

    const client = await MongoClient.connect(url, { useNewUrlParser: true })
        .catch(err => { console.log(err); });

    if (!client) {
        return;
    }

    try {

        const db = client.db("testdb");

        let collection = db.collection('cars');

        let query = { name: 'Volkswagen' }

        let res = await collection.findOne(query);

        console.log(res);

    } catch (err) {

        console.log(err);
    } finally {

        client.close();
    }
}

await findOne();

Node.js相关问答推荐

用于SLACK命令返回json而不是文本的AWS lambda函数

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

使用 axios 和 Cheerio (Node js) 抓取 google 搜索

编写动态创建的 YAML - 为生态系统创建 Docker compose 文件(使用 js-yaml)

MongoDB:通过匹配输入字符串或输入字符串中的单个单词进行搜索

bcrypt.compare 每次都返回 false

Solidity 将数据位置从内存更改为存储

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

如何通过node下载zip并直接解压zip?

登录用户并获取他们的个人资料

Axios 响应循环通过函数只返回第一个映射对象的结果

当我try 从本地主机发布新产品时收到错误消息

在系统启动时启动本地 node 服务器

使用 Forms API 进行批量更新时生成 itemId

Google Calendar API FreeBusy 外部用户

强制 TypeScript 生成带有.js扩展名的导出/导入;运行 node 16?

如何undo撤消 Object.defineProperty 调用?

在多个文件 node.js 之间共享和修改变量

为什么我会收到错误:解决方法指定过多?

Node.js `--nolazy` 标志是什么意思?