我应该为Node.js和MySQL使用哪个ORM?[关闭]


326

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


但这是一个非常有趣的主题。您想访问第三方开发人员来更改您网站上的数据吗?创建将请求参数(元语言)发送到后端的中间js库可能是一个更好的主意?
sergzach 2011年

2
@sergzach关心详细吗?Google用于“休眠缓存”。
庞萨2011年

嗯...有些站点允许用户应用程序。否则我不了解你,请原谅。
sergzach 2011年

2
@sergzach:缓存实际上是许多ORM解决方案的主要功能。以卡宴为例。
Nate CK

Answers:


101

我可以建议Node ORM吗?

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

自述文件中有文档,支持MySQL,PostgreSQL和SQLite。

2.1.x版(2013年7月发布)以来,MongoDB可用。

更新:根据项目的自述文件,不再维护此软件包。相反,它建议书架续集


27
根据文档,Sequelize看起来比该项目领先。
Tony O'Hagan

对于正在寻找mysql ORM的人来说,这是另一个不错的选择。语法更复杂,但也很好。
dresende

2
该项目已更改URL:github.com/dresende/node-orm2
Capy 2013年

我尝试部署此错误时收到此错误“错误:找不到模块'hat'”。..没有多少npm安装或重新安装似乎有帮助。有什么建议么?谢谢
Gene Bo

1
Node-orm2不再被主动维护。它链接到sequelize和bookshelf.js。
seebiscuit

150

我会选择Sequelize,因为它的文档很好。这只是一个诚实的看法(我从没真正将MySQL与Node一起使用过那么多)。


10
我还要指出,node-orm2或persistence.js不提供迁移机制。persistence.js不支持postgres。sequelize做这两个事情。
airtonix

4
我使用了node-orm2,并且由于Sequelize的文档更好,所以我能够更轻松地启动它和运行它
Michael J. Calkins 2014年

2
@Gelidus您从哪里获得此信息?
William Lepinski 2014年

14
可悲的是,Sequelize文档最近变得非常糟糕。我最近开始使用Sequelize,对文档感到非常满意。现在,它是一堆自动生成的断开链接,过时的信息和不完整的示例。我仍然坚持下去。学习起来并不难。
布拉德

2
刚刚删除了我的旧评论,现在我100%同意@Brad :(
Andrey Popov

19

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

这两个库都有很好的文档记录,并具有稳定的API。但是,persistence.js似乎在更多项目中使用。我不知道他们是否仍然使用它。

sequelize的开发人员有时会在blog.depold.com上发布有关此问题的博客。如果您想将主键用作外键,则需要此博客文章中描述的补丁。如果您需要persistence.js的帮助,可以使用专门的Google小组。

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

我认为续集可能是您的最佳选择,因为您只需要MySQL支持。但是,如果您需要一些方便的功能(例如搜索),或者以后想要使用其他数据库,则需要使用persistence.js。


1
似乎persistencejs.org现在指向某个不需要的网站,只有GitHub在起作用
sansknwoledge

10

Sequelize和Persistence.js之间的主要区别是前者支持一种STRING数据类型,即VARCHAR(255)。做一切我真感到不自在TEXT


7
目前,Persistence.js也支持VARCHAR。
alehro 2013年

8
在像PostgreSQL这样的数据库中,TEXT和VARCHAR完全相同,唯一的区别是,如果您设置了字节限制(VARCHAR(255)),则将有检查该限制的开销。在PostgreSQL中对所有内容使用TEXT绝对没有问题。
重写

3
在PostgreSQL中使用TEXT实际上是更好的做法,即使它不是可移植的。
Cowbert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.