Spec-Zone.ru › Sequelize 5

BelongsToMany

Расширяет:

Association → BelongsToMany

Связь «многие ко многим» с таблицей соединения.

Если таблица соединения имеет дополнительные атрибуты, их можно передать в объекте параметров:

UserProject = sequelize.define('user_project', {
  role: Sequelize.STRING
});
User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });
// through is required!

user.addProject(project, { through: { role: 'manager' }});

Все методы позволяют передать как сохранённую запись, её первичный ключ, или их комбинацию:

Project.create({ id: 11 }).then(project => {
  user.addProjects([project, 12]);
});

Если нужно установить несколько целевых записей, но с разными атрибутами, нужно установить атрибуты в записи, используя свойство с именем модели через:

p1.UserProjects = {
  started: true
}
user.setProjects([p1, p2], { through: { started: false }}) // The default value is false, but p1 overrides that.

Аналогично, при получении данных через таблицу соединения с пользовательскими атрибутами, эти атрибуты будут доступны как объект с именем модели через.

user.getProjects().then(projects => {
  let p1 = projects[0]
  p1.UserProjects.started // Is this project started yet?
})

В справочнике API ниже, добавьте имя ассоциации к методу, например, для User.belongsToMany(Project) метод получения будет user.getProjects().

См. также:

  • Model.belongsToMany

Краткое описание методов

Методы общего доступа
public

add(sourceInstance: Model, newInstances: Model | Model[] | string[] | string | number[] | number, options: Object): Promise

Связать одну или несколько строк с исходной записью.

public

count(instance: Model, options: Object): Promise<number>

Подсчитать все текущие связанные элементы, используя необязательное условие WHERE.

public

create(sourceInstance: Model, values: Object, options: Object): Promise

Создать новую запись связанной модели и связать её с этой.

public

get(instance: Model, options: Object): Promise<Array<Model>>

Получить все текущие связанные элементы, используя необязательное условие WHERE.

public

has(sourceInstance: Model, instances: Model | Model[] | string[] | string | number[] | number, options: Object): Promise<boolean>

Проверить, связана ли одна или несколько записей с этой.

public

remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | string | string[] | number | number[], options: Object): Promise

Отвязать одну или несколько записей.

public

set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | string[] | string | number[] | number, options: Object): Promise

Установить связанные модели, передав массив записей или их первичные ключи.

Наследуемое описание

От класса Association
public

associationType: string

Тип ассоциации.

public

source: Model

public

target: Model

Публичные методы

public add(sourceInstance: Model, newInstances: Model | Model[] | string[] | string | number[] | number, options: Object): Promise source

Связывает одну или несколько строк с исходным экземпляром. Это не отвяжет уже связанные экземпляры, которые могут отсутствовать в newInstances.

Параметры:

Имя Тип Атрибут Описание
sourceInstance Model

исходный экземпляр для связывания новых экземпляров

newInstances Model | Model[] | string[] | string | number[] | number
  • необязательно

Один экземпляр или первичный ключ, или смешанный массив персистированных экземпляров или первичных ключей

options Object
  • необязательно

Параметры, передаваемые в through.findAll, bulkCreate и update

options.validate Object
  • необязательно

Выполнить валидацию для модели объединения.

options.through Object
  • необязательно

Дополнительные атрибуты для таблицы объединения.

Возвращает:

Promise

public count(instance: Model, options: Object): Promise<number> source

Подсчитывает все текущие связанные элементы, используя необязательное условие WHERE.

Параметры:

Имя Тип Атрибут Описание
instance Model

экземпляр

options Object
  • необязательно

опции поиска

options.where Object
  • необязательно

Необязательное условие WHERE для ограничения связанных моделей

options.scope string | boolean
  • необязательно

Применить область модели, или удалить ее область по умолчанию, передав false

Возвращает:

Promise<number>

public create(sourceInstance: Model, values: Object, options: Object): Promise source

Создает новый экземпляр связанной модели и связывает его с этим.

Параметры:

Имя Тип Атрибут Описание
sourceInstance Model

исходный экземпляр

values Object
  • необязательно

значения для целевой модели

options Object
  • необязательно

Параметры, передаваемые в create и add

options.through Object
  • необязательно

Дополнительные атрибуты для таблицы объединения

Возвращает:

Promise

public get(instance: Model, options: Object): Promise<Array<Model>> source

Получить все текущие связанные с этим, используя необязательное условие where.

Параметры:

Имя Тип Атрибут Описание
instance Model

экземпляр

options Object
  • необязательно

опции поиска

options.where Object
  • необязательно

Необязательное условие where для ограничения связанных моделей.

options.scope строка | логическое значение
  • необязательно

Применить область видимости к связанной модели или удалить ее стандартную область видимости, передав false.

options.schema строка
  • необязательно

Применить схему к связанной модели.

Возвращает:

Promise<Массив<Model>>

См. также:

  • Model для полного объяснения опций

public has(sourceInstance: Model, instances: Model | Model[] | строка[] | строка | число[] | число, options: Object): Promise<логическое значение> source

Проверить, связана ли одна или несколько моделей с этой. Если передается список моделей, функция возвращает true, если все модели связаны.

Параметры:

Имя Тип Атрибут Описание
sourceInstance Model

Исходный экземпляр для проверки ассоциации.

instances Model | Model[] | строка[] | строка | число[] | число
  • необязательно

Может быть массивом экземпляров или их первичными ключами.

options Object
  • необязательно

Опции, передаваемые в getAssociations.

Возвращает:

Promise<логическое значение>

public remove(sourceInstance: Model, oldAssociatedObjects: Model | Model[] | string | string[] | number | number[], options: Object): Promise source

Отсоединить один или несколько экземпляров.

Параметры:

Имя Тип Атрибут Описание
sourceInstance Model

Экземпляр, который нужно отсоединить от других экземпляров

oldAssociatedObjects Model | Model[] | string | string[] | number | number[]
  • опционально

Может быть экземпляром или его первичным ключом, или смешанным массивом экземпляров и первичных ключей

options Object
  • опционально

Опции, передаваемые в through.destroy

Возвращаемое значение:

Promise

public set(sourceInstance: Model, newAssociatedObjects: Model | Model[] | string[] | string | number[] | number, options: Object): Promise source

Устанавливает связанные модели, передавая массив экземпляров или их первичных ключей. Все, что не входит в переданный массив, будет отсоединено.

Параметры:

Имя Тип Атрибут Описание
sourceInstance Model

Исходный экземпляр для связывания с новыми экземплярами

newAssociatedObjects Model | Model[] | string[] | string | number[] | number
  • опционально

Один экземпляр или первичный ключ, или смешанный массив сохранённых экземпляров или первичных ключей

options Object
  • опционально

Опции, передаваемые в through.findAll, bulkCreate, update и destroy

options.validate Object
  • опционально

Выполнить валидацию для модели соединения

options.through Object
  • опционально

Дополнительные атрибуты для таблицы соединения.

Возвращаемое значение:

Promise

Copyright © 2014–present Sequelize contributors
Licensed under the MIT License.
https://sequelize.org/v5/class/lib/associations/belongs-to-many.js~BelongsToMany.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API