2016-02-05 3 views
0

Я пытаюсь выяснить, какое ORM (или другое решение) использовать в моем приложении Sails.js + PostgreSQL. Основным правилом является то, что он поддерживает тип данных jsonb. К сожалению, Waterline не (bottom of the page), поэтому я должен был найти обходное решение. Приложение представляет собой MicroService с очень специфической целью и функциональностью и не будет чем-то огромным или сложным.Какой ORM, который поддерживает JSONB, лучше с Sails

Я наткнулся на некоторые API, которые могут быть интегрированы: BedquiltDB и PostgREST, но они кажутся излишним для моих нужд. Поэтому я скептически отношусь к использованию любого из этих решений.

Затем я наткнулся на Sequelize и Bookshelf (with Knex). Были и другие варианты, но эти 2 казались наиболее популярными и популярными. Вот мои общие точки по отношению к обоим вариантам:

Sequelize

  • Said иметь слабую общину и трудно найти ответы, но ТАК имеет х2 Q & А ватерлинии
  • Said чтобы быть болью в заднице, когда у вашего проекта есть сложные отношения с объектами (если это означает «больше, чем обычные внешние ключи», то я могу сказать, что у меня не будет этого в моей настройке БД)
  • Сказано, что у вас хорошая документация, но только для основ. Но я мог бы найти методы для всех основных и взаимосвязанных запросов, которые обычно используются, поэтому я не вижу здесь отрицательной стороны документов.
  • Опоздает jsonb из коробки, и в основном любой другой тип, который мне понадобится
  • Мне нравится документация - это довольно подробно. И я нашел Tuts о том, как легко интегрировать его с парусами

Bookshelf

  • Построить на KnexJS, который, кажется, мощный конструктор запросов. В принципе, вам нужно установить Knex, чтобы установить Bookshelf, так что у вас всегда есть и то, и другое. На мой взгляд, это недостаток, потому что мне придется использовать ORM + построитель запросов вместо одного ORM, чтобы удовлетворить все потребности, которые у меня есть.
  • Поддерживает jsonb (из-за Knex)
  • Я действительно не люблю документы Книжной полки. Недостаточно примеров типовых деклараций (в разных случаях).
  • Имеет гораздо меньше Q & A здесь, в SO, по сравнению с Sequelize. Итак, похоже, что сообщество слабее?

Я действительно копал на некоторых форумах, и у меня сложилось впечатление, что большинство людей придумывают Книжную полку перед Sequelize, хотя я не вижу этого таким образом.

Некоторые из моментов, которые я написал, могут быть неверными, на самом деле, поэтому я прошу еще нескольких мнений о том, какое решение вы бы использовали? Другие, кроме упомянутых, приветствуются, если есть факты о том, зачем их использовать.

ответ

2

Оба ORM следуют совершенно по-другому, чтобы решить проблему.Knex + Bookshelf - это скорее ORM-построитель запросов. Вы получите довольно хорошую поддержку для генерации запросов в соответствии с вашим требованием. При этом knex имеет больше «свободы» для генерации сложных запросов. Книжная полка также поддерживает JSONB.

Sequelize с другой стороны попытайтесь решить проблему JavaScript создание объектов на основе запросов. Он также поддерживает JSONB. Он имеет хорошую документацию. Sequelize недостает только в поле генерации сложных запросов. Например, issues. Но он имеет более широкое сообщество и очень активно развивается по сравнению с Книжной полкой.

Я использовал Sequelize для многих проектов, и это никогда не давало мне никаких проблем. Оба ОРМ хороши. Обе поддерживаются JSONB. Это зависит от вас, какой стиль вы хотите следовать.

И помните, что вы всегда можете писать необработанные запросы, если вы застряли.

+0

Sequelize и Knex не поддерживают полную функцию postgresql 9.6 Функции JSONB https://www.postgresql.org/docs/9.6/static/functions-json.html – stackdave