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

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

我看过的图书馆:

  • http://docs.sequelizejs.com/
  • https://github.com/dresende/node-orm2
  • http://bookshelfjs.org/
  • 一些其他的

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

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

我也尽我所能使它相当容错。 有100%的代码覆盖率,虽然我知道这并不能certificate没有缺陷,但我确实尝试了尽可能彻底的testing。

我在Doctrine 1之后非常松散地模拟了这个接口。(我已经相当广泛地使用了LINQ,Doctrine 1和2以及Hibernate,而那些我最喜欢Doctrine 1的接口的ORM是node-data-mapper不是JavaScript但不pipe怎么样,这个接口都有很大的不同。)查询接口使用延迟模块返回promise。

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

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

数据映射器模式和活动logging之间的区别在JavaScript等dynamic语言中并没有什么意义。 典型的数据映射器在types化语言中更加轻量级,但是在JS中它并没有真正的区别。 从我的头顶,我可以提到你可能不知道的两个非常受欢迎的项目:

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

如果你会考虑MongoDB的数据库 – Mongoose.js 。