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

naw*_*awK 5 orm node.js knex.js

我从IRC频道获得的答案:

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

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

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

为什么一个使用另一个?

Mik*_*stö 5

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

更好地使用objection.js它可以结合ORM的大部分功能,而不会影响编写任何类型的SQL查询的能力。

这是来自objection.js https://www.jakso.me/blog/objection-to-orm-hatred的作者的精彩文章

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

  • 有趣的是,您说 Knex 对于应用程序开发来说级别太低了。我以前在没有 ORM 的情况下使用过它,它工作得很好。我发现无需 ORM 抽象就可以更轻松地了解数据库中发生的情况。 (4认同)
  • 基于意见的声明“用于应用程序开发的工具太低级了”大大削弱了这个答案。虽然完整的 ORM 通常很有用,但在其他应用程序中,我发现即使只是 Knex 有时也太“高”,因为,例如,它不提供在 MySQL 中使用准备好的语句的接口。当然,在那种情况下我不会从反对中受益。 (3认同)