【问题标题】:Which ORM should I use for Node.js and MySQL? [closed]我应该为 Node.js 和 MySQL 使用哪个 ORM? [关闭]
【发布时间】:2011-08-25 19:51:48
【问题描述】:

我正在重写一个项目以使用 Node.js。我想继续使用 MySQL 作为数据库(即使我不介意重写架构)。 我正在寻找一种易于使用、性能合理的 ORM,它支持缓存、多对一和多对多关系。 从我能找到的 MySQL ORM 中,persistencejssequelize 似乎是最成熟的。 你有经验吗?在我的决定中我应该注意哪些相关的利弊?

【问题讨论】:

  • 但这是一个非常有趣的主题。您想访问第三方开发人员以更改您网站上的数据吗?创建将请求参数(元语言)发送到后端的中间 js 库可能是更好的主意?
  • @sergzach 需要详细说明吗?谷歌“休眠缓存”。
  • 嗯...有些网站允许用户应用程序。或者我没听懂,请见谅。
  • @sergzach:缓存实际上是许多 ORM 解决方案的一个相当重要的特性。以 Cayenne 为例。

标签: mysql orm node.js


【解决方案1】:

我会选择Sequelize,因为它的文档非常好。这只是一个诚实的意见(我从来没有真正将 MySQL 与 Node 一起使用过)。

【讨论】:

  • 我还想指出 node-orm2 或 persistence.js 不提供迁移机制。 persistence.js 不支持 postgres。 sequelize 做这两件事。
  • 我使用了 node-orm2,由于 Sequelize 的文档更好,我能够更轻松地启动和运行它
  • @Gelidus 你从哪里得到这些信息的?
  • 遗憾的是,Sequelize 文档最近变得很糟糕。我最近开始使用 Sequelize,并且对文档感到非常满意。现在它是一堆自动生成的断开链接、过时的信息和不完整的示例。不过我还是会坚持下去。这并不难学。
  • 刚刚删除了我的旧评论,我现在 100% 同意@Brad,不幸的是:(
【解决方案2】:

我可以推荐 Node ORM 吗?

https://github.com/dresende/node-orm2

Readme 上有文档,支持 MySQL、PostgreSQL 和 SQLite。

MongoDB 自版本 2.1.x(2013 年 7 月发布)起可用

更新:根据项目的自述文件,不再维护此包。而是推荐bookshelfsequelize

【讨论】:

  • 根据文档,Sequelize 似乎领先于这个项目。
  • 对于寻找 mysql ORM 的人来说,这是另一个不错的选择。语法更复杂,但也很好。
  • 项目已更改网址:github.com/dresende/node-orm2
  • 我在尝试部署时收到此错误“错误:找不到模块‘帽子’”。 .. 没有多少 npm install 或 re-install 似乎有帮助。有什么建议?谢谢
  • Node-orm2 不再积极维护。它链接到 sequelize 和 bookshelf.js。
【解决方案3】:

首先,请注意我没有使用过它们中的任何一个(但使用过 Node.js)。

这两个库都有很好的文档记录,并且有一个 稳定的 API。然而,persistence.js 似乎是used in more projects。不过,我不知道他们是否还在使用它。

sequelize 的开发者有时会在 blog.depold.com 上发布有关它的博客。当您想使用主键作为外键时,您需要this blog post 中描述的补丁。如果您需要persistence.js 方面的帮助,有一个专门的google 小组。

从我收集到的示例中,sequelize 比persistance.js 更像JavaScript(更多糖),但支持的数据存储更少(只有MySQL,而persistance.js 甚至可以使用浏览器内存储)。

我认为 sequelize 可能是适合您的方式,因为您只需要 MySQL 支持。但是,如果您需要一些方便的功能(例如搜索)或以后想使用不同的数据库,则需要使用 persistence.js。

【讨论】:

  • 似乎 persistencejs.org 现在指向了一些不需要的站点,只有 GitHub 在工作
【解决方案4】:

Sequelize 和 Persistence.js 之间的一个主要区别是前者支持STRING 数据类型,即VARCHAR(255)。我对制作所有内容感到非常不舒服TEXT

【讨论】:

  • 目前 Persistence.js 也支持 VARCHAR。
  • 在像 PostgreSQL 这样的数据库中,TEXT 和 VARCHAR 是完全一样的,唯一的区别是如果你设置一个字节限制 (VARCHAR(255)) 那么你有一个检查限制的开销。对 PostgreSQL 中的所有内容使用 TEXT 绝对没有问题。
  • 在 PostgreSQL 中使用 TEXT 实际上是更好的做法,即使它不可移植。
猜你喜欢
  • 1970-01-01
  • 2012-03-01
  • 1970-01-01
  • 2016-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-26
  • 2011-08-15
相关资源
最近更新 更多