首页 文章

Javascript node.js遵循数据映射器模式的ORM

提问于
浏览
9

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

我看过的图书馆:

3 回答

  • 1

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

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

    如果你认为你的数据库是MongoDB - Mongoose.js .

  • -6

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

  • 12

    我为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模块返回promise .

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

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

相关问题