Node.js Knex 与 Sequelize 有何相似/不同?

问题描述 投票:0回答:2

我从IRC频道得到的答案:

Sequelize 是一个 ORM,其中包含一些查询构建器的内容; Knex 只是一个查询生成器,而不是一个 ORM。

ORM 实际上不太适合许多用例,很容易遇到它们可以表达的限制,最终需要突破它们。

但这并不能真正解释每种方法的优缺点。 我正在寻找一个解释,可能还有一个简单的例子(用例)来强调这些相似点/差异。

为什么人们会使用其中一种而不是另一种?

node.js orm knex.js
2个回答
41
投票

Sequelize 是成熟的 ORM,迫使您将 SQL 隐藏在对象表示后面。 Knex 是普通查询生成器,对于应用程序开发来说这是太低级的工具。

更好地使用

objection.js
它结合了ORM的良好部分,而不会影响编写任何类型的SQL查询的能力。

这是 objection.js 作者写的一篇关于它的好文章 https://www.jakso.me/blog/objection-to-orm-hatred

免责声明:我是 knex 维护者,也参与了 objection.js 的开发。


2
投票

这样想,哪个性能更好,哪个更容易学习。

作为低级数据库驱动程序

对于 postgresql,您可以使用 pg 作为查询构建器

作为中级水平,您可以使用 knex

作为高级,你可以使用 ORM,例如基于 knex 的sequelize、bookshelf、objection

现在低水平并不意味着坏事。这是您可以获得的最佳性能,但缺点是您需要学习正在使用的数据库的查询

现在 knex 与查询生成器相同,具有相同的成本操作

现在等级最高的成本也最高 但是它很容易学习,但是如果你学习了sequelize并决定使用objection,那么规模就会缩小,它们是不同的,所以你需要学习另一个ORM

我的建议是,如果您希望可扩展的复杂后端服务器获得最佳性能,您可以使用查询生成器或 knex

如果你想处理像 mongoose 这样的对象实例,你可以使用 Sequelize。

唯一的区别就是运营成本,差别不大。

但是 ORM 具有更多功能。

当然你可以参考这篇文章来了解更多 关于 ORM

https://blog.logrocket.com/why-you-should-avoid-orms-with-examples-in-node-js-e0baab73fa5/

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.