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

时间:2019-05-07 18:08:43

标签: node.js orm knex.js

我从IRC频道获得的答案:

  

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

     

ORM实际上在许多用例中并不十分合适,很容易遇到它们可以表达的限制,最终需要摆脱困境。

但是,这并不能真正解释它们各自的优缺点。我正在寻找一种解释,可能还需要一个简单的示例(用例)来突出那些相似/不同之处。

为什么一个要用一个呢?

2 个答案:

答案 0 :(得分:1)

Sequelize是完整的ORM,迫使您将SQL隐藏在对象表示之后。 Knex是简单的查询生成器,对于应用程序开发来说,它太底层了。

更好地使用NSLock,它结合了ORM的优点,而不会影响编写任何类型的SQL查询的能力。

这是objection.js https://www.jakso.me/blog/objection-to-orm-hatred

的作者写的一篇很好的文章

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

答案 1 :(得分:0)

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

作为底层数据库驱动

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

作为中级,你可以使用 knex

作为高级别的,你可以使用 ORM,比如 sequelize、bookshelf、基于 knex 的反对

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

现在 knex 与查询构建器相同的成本操作

现在最高级别的成本最高 但是它很容易学习,但是如果你学习了 sequelize 并决定使用反对意见,那么它们就会缩小,所以你需要学习另一个 ORM

我的建议,如果你想要一个可扩展的复杂后端服务器的最佳性能,你可以使用查询构建器或 knex

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

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

但 ORM 具有更多功能。

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

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