2015-12-20 4 views
0

Является ли JSData заменой или дополнением Sequelize.js?Сохранение СУХОЙ при использовании JSData и Sequelize

Я пытаюсь понять, как эти две библиотеки могут играть вместе, и если это необходимо.

Из моего чтения это похоже на то, что JSData в основном занимается доступом к данным, а Sequelize.js создаст и изменяет scema и ALSO обеспечивает доступ к объектам.

Есть ли смысл использовать JSData на стороне сервера, если я использую Sequelize.js?

Я собираюсь использовать Sequelize на стороне сервера, реализовать некоторые REST API для этих объектов и использовать JSData + JSDATA-http на стороне клиента для доступа к REST API, но он чувствует, что мне нужно будет определить объекты дважды ... один раз для Sequelize и один раз для JSData - есть ли какая-нибудь магия, которая может помешать вам сделать это дважды? или я думаю обо всем этом не так?

ответ

2

Является ли JSData заменой или дополнением Sequelize.js? Я пытаюсь понять, как эти две библиотеки могут играть вместе, и если нужно.

На сервере js-data + js-data-sql заменит Sequelize, аналогично тому, как js-data + js-data-mongodb заменит Mongoose. js-data-sql использует Knex.js под капотом, который вы можете использовать для миграции схем и для чего-то еще, что поддерживает Knex. Для проверки схемы вы можете подключить вашу любимую библиотеку проверки в js-данные с помощью крюка жизненного цикла validate (и других мест).

Есть ли смысл использовать JSData на стороне сервера, если я использую Sequelize.js?

Нет

Я имею в виду использовать Sequelize на стороне сервера, реализовать некоторые REST API для этих объектов и использовать JSData + JSDATA-клиента на стороне клиента для доступа к REST API, но чувствует, что мне придется определять объекты дважды ... один раз для Sequelize и один раз для JSData - есть ли какая-нибудь магия, которая может помешать вам сделать это дважды?

У меня есть опыт использования js-data + js-data-http на клиенте и Sequelize на сервере. Вы можете это сделать, но да, вам нужно определить каждую из ваших моделей/ресурсов дважды, после использования Sequelize API и после использования API js-data. Вы можете смягчить дублирование, извлекая общую логику в «базовые» модели, чем может использоваться сервером и клиентом. Хотя, если вы используете js-данные на сервере, вы можете составлять сложные запросы прямо на клиенте, не переведя их на что-то, что понимает ORM сервера.

или я думаю обо всем этом не так?

Нет, вы просто пытаетесь понять свои варианты. Будучи автором js-данных, я бы, конечно, высказался в пользу js-data + js-data-sql, но основные области, где js-data + js-data-sql отстают от Sequelize, это то, что Sequelize имеет встроенную поддержку для relationshipToMany (n: m) и встроенное понимание типов данных sql (валидация зависит от вас с js-данными).

+0

Спасибо за ваш ответ и спасибо за написание этого инструмента. Я хотел бы указать, что через документацию он не «выскочил», что js-data фактически управляет такими вещами, как создание таблиц и т. Д. Не могли бы вы указать мне пример, показывающий, как это работает? и когда в жизненном цикле кода это происходит? также, если бы вы могли подробно остановиться на проблеме «sql datatypes», это могло бы быть полезно. Что касается n: m, возможно, для преодоления этого можно использовать отношения n: 1 + 1: m .... – epeleg

+1

js-data не создает автоматически таблицы. Создание таблиц даже имеет смысл, когда вы используете адаптер sql. Mongo автоматически создает коллекции для вас, а другие адаптеры не имеют представления о таблицах. Пример создания таблиц с помощью адаптера sql: https://github.com/js-data/js-data-examples/blob/master/server/sql/app/app.js#L197 Это происходит только там, где вы это делаете , n: 1 + 1: m как работает n: m, это просто Sequelize понимает это и скрывает промежуточную таблицу. С помощью js-данных вам придется иметь дело с промежуточной таблицей. – jdobry

+0

спасибо, так что, похоже, я вернусь к идее использования sequelize на стороне сервера и js-данных на стороне клиента ... – epeleg

Смежные вопросы