哪个支持 JSONB 的 ORM 更适合 Sails
Which ORM that supports JSONB is better with Sails
我想弄清楚要在我的 Sails.js + PostgreSQL 应用程序中使用什么 ORM(或其他解决方案)。基本规则是它支持 jsonb
数据类型。不幸的是 Waterline
没有 (bottom of the page),所以我不得不四处寻找解决方法。该应用程序是一个具有非常特定用途和功能的微服务,不会变得庞大或超级复杂。
我偶然发现了一些可以集成的 API:BedquiltDB and PostgREST,但这些似乎对我的需求来说有点矫枉过正。因此,我对使用任何此类解决方案持怀疑态度。
然后我偶然发现了 Sequelize and Bookshelf (with Knex)。还有其他一些选择,但这两个似乎是最受欢迎和使用最多的。以下是我对这两种选择的一般观点:
续集
- 据说社区薄弱,很难找到答案,但在 SO 中
有 x2 水线问答
- 据说当您的项目具有 复杂的实体关系 时会很痛苦(如果这意味着 "more than usual foreign keys",那么我可以说我不是将在我的数据库设置中使用它)
- 据说有很好的文档,但仅限于基础知识。但是我可以找到基本上所有通常会使用的基本查询和关系查询的方法,所以我没有看到文档的负面影响这里。
- 支持
jsonb
开箱即用,基本上支持我需要的任何其他类型
- 我喜欢文档 - 它非常详细。我发现了关于如何轻松地将它与 Sails 集成的问题
书架
- 建立在 KnexJS 之上,它似乎是一个强大的查询生成器。基本上,您需要安装 Knex 才能安装 Bookshelf,所以您总是两者兼得。在我看来,这是一个缺点,因为我将不得不使用 ORM + 查询构建器,而不是单个 ORM,才能满足我的所有需求。
- 支持
jsonb
(因为 Knex)
- 我不太喜欢 Bookshelf 的文档。模型声明的例子不够好(各种情况)。
- 与 Sequelize 相比,SO 中的问答要少得多。所以,社区似乎更弱了?
我确实在一些论坛上进行了深入研究,得到的印象是大多数人都喜欢 Sequelize 前面的 Bookshelf,尽管我不这么认为。
我写的一些观点在现实中可能并不正确,所以我想就您会使用哪种解决方案征求更多意见?除了提到的那些之外,只要有关于为什么使用它们的事实,欢迎使用。
两种ORM解决问题的方式完全不同。 Knex + Bookshelf
更像是一个基于 ORM 的查询构建器。您将获得非常好的支持,可以根据您的要求生成查询。也就是说 knex
有更多 "freedom" 用于生成复杂的查询。 Bookshelf 也支持 JSONB。
Sequelize
另一方面尝试通过 JavaScript
基于对象的查询形式来解决问题。它还支持 JSONB
。它有很好的文档。 Sequelize
只缺乏生成复杂查询的领域。例如一些 issues。但与 Bookshelf 相比,它拥有更大的社区并且正在积极开发中。
我在很多项目中都使用 Sequelize
,它从来没有给我带来任何问题。两个 ORM 都很好。两者都支持 JSONB
。这取决于你想要遵循哪种风格。
请记住,如果遇到困难,您可以随时编写原始查询。
我想弄清楚要在我的 Sails.js + PostgreSQL 应用程序中使用什么 ORM(或其他解决方案)。基本规则是它支持 jsonb
数据类型。不幸的是 Waterline
没有 (bottom of the page),所以我不得不四处寻找解决方法。该应用程序是一个具有非常特定用途和功能的微服务,不会变得庞大或超级复杂。
我偶然发现了一些可以集成的 API:BedquiltDB and PostgREST,但这些似乎对我的需求来说有点矫枉过正。因此,我对使用任何此类解决方案持怀疑态度。
然后我偶然发现了 Sequelize and Bookshelf (with Knex)。还有其他一些选择,但这两个似乎是最受欢迎和使用最多的。以下是我对这两种选择的一般观点:
续集
- 据说社区薄弱,很难找到答案,但在 SO 中 有 x2 水线问答
- 据说当您的项目具有 复杂的实体关系 时会很痛苦(如果这意味着 "more than usual foreign keys",那么我可以说我不是将在我的数据库设置中使用它)
- 据说有很好的文档,但仅限于基础知识。但是我可以找到基本上所有通常会使用的基本查询和关系查询的方法,所以我没有看到文档的负面影响这里。
- 支持
jsonb
开箱即用,基本上支持我需要的任何其他类型 - 我喜欢文档 - 它非常详细。我发现了关于如何轻松地将它与 Sails 集成的问题
书架
- 建立在 KnexJS 之上,它似乎是一个强大的查询生成器。基本上,您需要安装 Knex 才能安装 Bookshelf,所以您总是两者兼得。在我看来,这是一个缺点,因为我将不得不使用 ORM + 查询构建器,而不是单个 ORM,才能满足我的所有需求。
- 支持
jsonb
(因为 Knex) - 我不太喜欢 Bookshelf 的文档。模型声明的例子不够好(各种情况)。
- 与 Sequelize 相比,SO 中的问答要少得多。所以,社区似乎更弱了?
我确实在一些论坛上进行了深入研究,得到的印象是大多数人都喜欢 Sequelize 前面的 Bookshelf,尽管我不这么认为。
我写的一些观点在现实中可能并不正确,所以我想就您会使用哪种解决方案征求更多意见?除了提到的那些之外,只要有关于为什么使用它们的事实,欢迎使用。
两种ORM解决问题的方式完全不同。 Knex + Bookshelf
更像是一个基于 ORM 的查询构建器。您将获得非常好的支持,可以根据您的要求生成查询。也就是说 knex
有更多 "freedom" 用于生成复杂的查询。 Bookshelf 也支持 JSONB。
Sequelize
另一方面尝试通过 JavaScript
基于对象的查询形式来解决问题。它还支持 JSONB
。它有很好的文档。 Sequelize
只缺乏生成复杂查询的领域。例如一些 issues。但与 Bookshelf 相比,它拥有更大的社区并且正在积极开发中。
我在很多项目中都使用 Sequelize
,它从来没有给我带来任何问题。两个 ORM 都很好。两者都支持 JSONB
。这取决于你想要遵循哪种风格。
请记住,如果遇到困难,您可以随时编写原始查询。