Spec-Zone.ru › Sequelize 4

BelongsToMany

Расширяет:

Связь → 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(function (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(function (projects) {
  let p1 = projects[0]
  p1.UserProjects.started // Is this project started yet?
})

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

См. также:

  • Model.belongsToMany

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

Общедоступные методы
public

add(newAssociation(s): Модель[] | Модель | строка[] | строка | число[] | Число, options: Объект): Promise

Связать одну или несколько строк с this.

public

count(options: Объект): Promise<Целое число>

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

public

create(values: Объект, options: Объект): Promise

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

public

get(options: Объект): Promise<Массив<Модель>>

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

public

has(instance(s): Модель[] | Модель | строка[] | Строка | число[] | Число, options: Объект): Promise<boolean>

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

public

remove(oldAssociated: Модель | Строка | Число, options: Объект): Promise

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

public

set(newAssociations: Массив<Модель|Строка|Число>, options: Объект): Promise

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

Краткое описание унаследованных методов

Из класса Связь
public

associationType: строка

Тип связи.

public

источник: Модель

public

цель: Модель

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

public add(newAssociation(s): Model[] | Model | string[] | string | number[] | Number, options: Object): Promise source

Связать одну или несколько строк с this.

Параметры:

Name Type Attribute Description
newAssociation(s) Model[] | Model | string[] | string | number[] | Number
  • optional

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

options Object
  • optional

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

options.validate Object
  • optional

Запустить валидацию для модели соединения.

options.through Object
  • optional

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

Возвращает:

Promise

public count(options: Object): Promise<Integer> source

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

Параметры:

Name Type Attribute Description
options Object
  • optional
options.where Object
  • optional

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

options.scope String | Boolean
  • optional

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

Возвращает:

Promise<Integer>

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

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

Параметры:

Name Type Attribute Description
values Object
  • optional
options Object
  • optional

Параметры, переданные для создания и добавления

options.through Object
  • optional

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

Возвращает:

Promise

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

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

Параметры:

Name Type Attribute Description
options Object
  • optional
options.where Object
  • optional

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

options.scope String | Boolean
  • optional

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

options.schema String
  • optional

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

Возвращает:

Promise<Array<Model>>

См. также:

  • Model.findAll для полного объяснения параметров

public has(instance(s): Model[] | Model | string[] | String | number[] | Number, options: Object): Promise<boolean> source

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

Параметры:

Name Type Attribute Description
instance(s) Model[] | Model | string[] | String | number[] | Number
  • optional

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

options Object
  • optional

Параметры, переданные в getAssociations

Возвращает:

Promise<boolean>

публичный remove(oldAssociated: Модель | Строка | Число, options: Объект): Обещание источник

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

Параметры:

Имя Тип Атрибут Описание
oldAssociated Модель | Строка | Число
  • необязательный

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

options Объект
  • необязательный

Параметры, передаваемые в through.destroy

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

Обещание

публичный set(newAssociations: Массив<Модель|Строка|Число>, options: Объект): Обещание источник

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

Параметры:

Имя Тип Атрибут Описание
newAssociations Массив<Модель|Строка|Число>
  • необязательный

Массив сохранённых экземпляров или первичных ключей экземпляров для связывания с этим. Передайте null или undefined для удаления всех связей.

options Объект
  • необязательный

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

options.validate Объект
  • необязательный

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

options.through Объект
  • необязательный

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

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

Обещание

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

Spec-Zone.ru

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