Как делать объединения в SequelizeJS?

0

Это мое определение модели таблицы Room

sequelize.define("room", {
 id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
 name: DataTypes.STRING,
 business_id: {
  type: DataTypes.INTEGER,
  references: {
    model:"business,
    key: "id"
  }
 }
});

И это дело

sequelize.define("business", {
 id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
 name: DataTypes.STRING,
});

Теперь рассмотрим, что у меня есть id комнаты со мной, и я хочу связать это дело с использованием внешнего ключа. В обычном SQL я бы легко сделал это, используя inner join

Я знаю, что есть что-то вроде Ассоциации, используемой в Sequelize, но тогда в чем смысл определения ссылки в определении модели?

Теги:
sequelize.js

1 ответ

1
Лучший ответ

В соответствии с DOC:

Иногда вам может понадобиться ссылаться на другую таблицу, не добавляя никаких ограничений или ассоциаций. В этом случае вы можете вручную добавить ссылочные атрибуты к определению схемы и пометить отношения между ними.

Ассоциация:

Создание ассоциаций в sequelize выполняется путем вызова одной из функций belongsTo/hasOne/hasMany/принадлежит ToMany для модели (источника) и предоставления другой модели в качестве первого аргумента функции (цели).

  1. hasOne - добавляет внешний ключ к целевой и сингулярной ассоциации mixins к источнику.
  2. belongsTo - добавить к источнику внешний ключ и сингулярные ассоциации mixins.
  3. hasMany - добавляет внешний ключ к целевому и множественному объединению mixins к источнику.
  4. belongsToMany - создает связь N: M с таблицей соединений и добавляет множественные ассоциации mixins к источнику. Таблица соединений создается с помощью sourceId и targetId.

Создание ассоциации добавит ограничение внешних ключей к атрибутам. Все ассоциации используют CASCADE при обновлении и SET NULL при удалении, кроме n: m, который также использует CASCADE при удалении.

Я думаю, что это очистит ваши сомнения.

  • 0
    Спасибо. В первом случае, как мне получить доступ к данным связанных таблиц?
  • 0
    @Praveena, я думаю, для этого вам нужно использовать ассоциацию, поскольку ссылка - это просто определение отношения Pk и Fk, и проверяет это каждый раз, когда данные вставляют / обновляют. Тем не менее, вы можете попробовать включить, но я не думаю, что это будет работать
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню