【问题标题】:How difficult is it to choose an ORM for Node.js? Or Node.js lacks a mature ORM为 Node.js 选择 ORM 有多难?或者 Node.js 缺乏成熟的 ORM
【发布时间】:2020-11-24 12:36:30
【问题描述】:

我有一个生产项目要开发。这是一个电子商务网站。 我当前的堆栈:

  1. Node.js
  2. 打字稿
  3. PostgreSQL

现在我必须为这个项目选择一个 ORM。 我想我有两个选择:

  1. TypeORM。我以前用过这个 ORM。它是一款不错且稳定的软件,但 TypeORM 已经有了maintenance issues for a while。我不确定这个 ORM 的未来。
  2. MikroORM。 TypeORM 缺少一些有用的功能,例如@Filters(范围)和批量订阅者,而另一方面,MikroORM 具有这些功能或替代品(请参阅filtersalternative to bulk subscribers)。但是 MikroORM 不那么流行并且相对较新。而且 MikroORM 的很多功能还在alpha

总结

缺乏维护和功能但稳定的 ORM 或具有良好维护、新功能但未经实战测试的 ORM。 哪个选项更好?或者也许有一些替代方案?

【问题讨论】:

    标签: node.js orm typeorm mikro-orm


    【解决方案1】:

    你可以查看 Sequelize - https://sequelize.org,它支持 TypeScript,但我认为语法有点丑。 三者中,Sequelize 是最成熟的 ORM。

    TypeORM 非常好,但有一些像这样的主要错误 - https://github.com/typeorm/typeorm/issues/3095。我遇到了与保存一对多关系相关的相同或类似问题,我认为这是每个 ORM 最重要的特性之一,它必须正常工作。

    我使用 MikroORM 有一段时间了 - 还有一些小问题,幸运的是,这些问题将在版本 4 中得到解决。总的来说,大部分功能都可以正常工作,我遇到的几乎所有问题都是在github上报告后很快解决。

    【讨论】:

      【解决方案2】:

      我推荐 Prisma,一个新的 NodeJS ORM,具有强大的功能和文档。

      【讨论】:

      • 您是否将它与 REST-API 一起使用?当我想在 typescript 客户端中使用它的接口时,我很难使用 atm
      【解决方案3】:

      有一个名为@gradii/fedaco 的组织。从 laravel eloquent 转换而来的代码。目前还在wip中

      实际上我现在没有时间和兴趣需要很长时间来维护这个项目。 打字稿代码和部分测试未公开。

      【讨论】:

        猜你喜欢
        • 2011-09-15
        • 2012-04-04
        • 2014-02-14
        • 1970-01-01
        • 2013-03-08
        • 1970-01-01
        • 2014-12-26
        • 1970-01-01
        • 2018-01-23
        相关资源
        最近更新 更多