13

我一直在使用 ORM 的活动记录和数据映射器实现,足以了解在我的大型项目中使用活动记录实现的 ORM 的问题。现在我正在考虑将我的一个项目迁移到 node.js 并尝试找到我现在使用的类似工具。经过研究,我没有发现任何遵循数据映射器模式的 node.js ORM。他们都是活跃的记录。也许我遗漏了一些东西,你可以告诉我是否有一个很好的流行的 node.js ORM 不遵循活动记录模式?

我看过的图书馆:

4

3 回答 3

24

在对当前存在的 JavaScript ORM 感到沮丧之后,我编写了自己的 ORM,它支持 TypeScript / ES6 / ES5 并遵循数据映射器模式和所有其他最佳实践 - TypeORM

于 2016-10-16T06:21:49.447 回答
4

我为 Node.js 编写了一个名为 node-data-mapper 的 ORM;它在这里可用:https ://www.npmjs.com/package/node-data-mapper 。这是一个使用数据映射器模式的 Node.js 的 ORM。开发人员在读取和写入数据库时​​使用普通的旧 JavaScript 对象。表之间的关系没有严格定义,这使得连接非常灵活——无论如何,在我看来——尽管有些冗长。实际的数据映射算法又快又短,复杂度是线性的(从表格 DB 数据到规范化 JavaScript 对象的转换是在一个循环中完成的)。

我也尽我所能使它具有相当的容错性。有 100% 的代码覆盖率,虽然我知道这并不能证明没有缺陷,但我确实尝试尽可能彻底地进行测试。

我在 Doctrine 1 之后对接口进行了非常松散的建模。(我相当广泛地使用了 LINQ、Doctrine 1 和 2 以及 Hibernate,在这些 ORM 中,我最喜欢 Doctrine 1 的接口。node-data-mapper 不是 JavaScript无论如何,Doctrine 的端口,并且接口有很大的不同。)查询接口使用deferred模块返回承诺。

我在 MongoDB 的条件之后对条件(例如 WHERE 和 ON 子句)进行了建模。希望这使得条件有点直观,同时提供了一种进行可重用查询的方法(特别是可以以多种不同方式安全过滤的复杂 SELECT 查询)。这些条件被视为特定领域的语言,并经过词法分析、解析和编译。

无论如何,该模块是我在个人项目中使用的东西,但我很想从社区中的其他开发人员那里得到一些反馈!我试图提供大量的例子来让人们快速上手。目前该模块仅支持 MySQL,但我正在努力添加对 MSSQL 的支持。

于 2016-05-28T06:36:32.780 回答
-7

数据映射器模式和活动记录之间的区别在 JavaScript 等动态语言中并没有真正意义。通常数据映射器在类型化语言中更轻量级,但在 JS 中并没有真正的区别。从我的脑海中,我可以提到两个你可能不知道的非常流行的项目:

Waterline.js是一个 Sails 抽象,它在许多数据库系统上运行良好。

如果您考虑将 MongoDB 用于您的数据库 - Mongoose.js

于 2015-04-12T18:56:57.900 回答