发现一个可以用 ES7 async 的 Mongo ORM,推荐 Nodejs 下的 Mongorito

发布于 1周前 作者 ionicwang 来自 nodejs/Nestjs

发现一个可以用 ES7 async 的 Mongo ORM,推荐 Nodejs 下的 Mongorito

Koa2 越来越完善了 尝试用 Koa2 写点东西 async await 语法很优雅 异步流程变得很直观;

然后我就在找 promise 版的 mongodb 驱动;

Mongoose 是可以用 .exec() 返回 promise 的, 但我始终觉得 Mongoose 太重了, 其实很多情况下都在用 aggregate, 返回的结果都用不到我们再 Model 里定义的 virtuals, hooks ... 当然, 不用 Mongoose 就用不了它很多很牛的插件 如处理 path 结构的 Materialized 等 ...

不管怎样, 我搜了下 promise 版的 Mongo 驱动 找到了这个 看上去还不错 功能特点:

  • 支持 ES6 class 的 Model
    • Model 支持 hook, 虽然注册 hook 的方法不怎么优雅.
  • 支持 ES7 async 的查询
    • 基于 mquery 的语义化的查询很方便
    • 不支持直接使用 aggregate, 已提交 issue

https://github.com/vadimdemedes/mongorito

大家还有什么好的推荐吗?


3 回复

主要问题是 orm 能不能保证 query 过程的性能和速度, 语法其实无所谓


额, 感觉没人气呢

关于你推荐的Nodejs下的Mongo ORM——Mongorito,以及提到的ES7 async特性,以下是我的专业回复:

Mongorito确实是一个轻量级的MongoDB ORM,它简化了与MongoDB的交互,并为Node.js开发者提供了更直观的数据库操作方法。然而,需要指出的是,ES7中的async/await特性并不是Mongorito独有的,而是JavaScript语言的一部分,它可以极大地提升异步代码的可读性和可维护性。

以下是一个使用async/await与MongoDB交互的简单示例,展示了如何在Node.js中利用这一特性:

const { MongoClient } = require('mongodb');

async function connectToDatabase() {
    const uri = 'mongodb://localhost:27017';
    const client = new MongoClient(uri);

    try {
        await client.connect();
        const database = client.db('myDatabase');
        const collection = database.collection('myCollection');

        // 在这里执行数据库操作,如插入、查询、更新或删除文档
        const documents = await collection.find({}).toArray();
        console.log(documents);
    } finally {
        await client.close();
    }
}

connectToDatabase();

在这个示例中,我们使用了async/await来连接MongoDB数据库,并执行了一个简单的查询操作。这种方式使得异步代码看起来更像是同步代码,从而提高了代码的可读性。

回到顶部