logologo
Початок
Посібник
Розробка
Плагіни
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Початок
Посібник
Розробка
Плагіни
API
logologo
Огляд API

@nocobase/auth

AuthManager
Автентифікація
BaseAuth

@nocobase/cache

CacheManager
Кеш

@nocobase/cli

NocoBase CLI
Глобальні змінні середовища

@nocobase/client

application
Плагін

@nocobase/database

Колекція
Поле

interfaces

BaseInterface
Оператори фільтрації

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Репозиторій

shared

create-options
destroy-options
find-one
find-options
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
DataSource (абстрактний)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Менеджер джерел даних
Контекст робочого процесу
FlowEngine
FlowModel
Ресурс робочого процесу

@nocobase/logger

Логер

@nocobase/server

AppCommand
Застосунок
AuditManager
Контекст
Міграція
Плагін

@nocobase/sdk

Auth
Сховище
Previous PageRelationRepository
Next Pagebelongs-to-repository
Повідомлення про переклад ШІ

Ця документація була автоматично перекладена штучним інтелектом.

#BelongsToManyRepository

BelongsToManyRepository — це Relation Repository для роботи з відносинами типу BelongsToMany.

На відміну від інших типів відносин, зв'язки BelongsToMany вимагають запису через проміжну таблицю. При визначенні асоціативного зв'язку в NocoBase проміжна таблиця може створюватися автоматично або бути явно вказаною.

#Методи класу

#find()

Знаходить асоційовані об'єкти

Підпис

  • async find(options?: FindOptions): Promise<M[]>

Деталі

Параметри запиту узгоджуються з Repository.find().

#findOne()

Знаходить асоційований об'єкт, повертаючи лише один запис

Підпис

  • async findOne(options?: FindOneOptions): Promise<M>

#count()

Повертає кількість записів, що відповідають умовам запиту

Підпис

  • async count(options?: CountOptions)

Тип

interface CountOptions
  extends Omit<SequelizeCountOptions, 'distinct' | 'where' | 'include'>,
    Transactionable {
  filter?: Filter;
}

#findAndCount()

Запитує базу даних для отримання набору даних та загальної кількості результатів за певними умовами.

Підпис

  • async findAndCount(options?: FindAndCountOptions): Promise<[any[], number]>

Тип

type FindAndCountOptions = CommonFindOptions;

#create()

Створює асоційований об'єкт

Підпис

  • async create(options?: CreateOptions): Promise<M>

#update()

Оновлює асоційовані об'єкти, що відповідають умовам

Підпис

  • async update(options?: UpdateOptions): Promise<M>

#destroy()

Видаляє асоційовані об'єкти, що відповідають умовам

Підпис

  • async destroy(options?: TargetKey | TargetKey[] | DestroyOptions): Promise<Boolean>

#add()

Додає нові асоційовані об'єкти

Підпис

  • async add( options: TargetKey | TargetKey[] | PrimaryKeyWithThroughValues | PrimaryKeyWithThroughValues[] | AssociatedOptions ): Promise<void>

Тип

type PrimaryKeyWithThroughValues = [TargetKey, Values];

interface AssociatedOptions extends Transactionable {
  tk?:
    | TargetKey
    | TargetKey[]
    | PrimaryKeyWithThroughValues
    | PrimaryKeyWithThroughValues[];
}

Деталі

Ви можете безпосередньо передати targetKey асоційованого об'єкта або передати targetKey разом зі значеннями полів проміжної таблиці.

Приклад

const t1 = await Tag.repository.create({
  values: { name: 't1' },
});

const t2 = await Tag.repository.create({
  values: { name: 't2' },
});

const p1 = await Post.repository.create({
  values: { title: 'p1' },
});

const PostTagRepository = new BelongsToManyRepository(Post, 'tags', p1.id);

// Передача targetKey
PostTagRepository.add([t1.id, t2.id]);

// Передача полів проміжної таблиці
PostTagRepository.add([
  [t1.id, { tagged_at: '123' }],
  [t2.id, { tagged_at: '456' }],
]);

#set()

Встановлює асоційовані об'єкти

Підпис

  • async set( options: TargetKey | TargetKey[] | PrimaryKeyWithThroughValues | PrimaryKeyWithThroughValues[] | AssociatedOptions, ): Promise

Деталі

Параметри такі ж, як у add().

#remove()

Видаляє асоціацію із заданими об'єктами

Підпис

  • async remove(options: TargetKey | TargetKey[] | AssociatedOptions)

Тип

interface AssociatedOptions extends Transactionable {
  tk?: TargetKey | TargetKey[];
}

#toggle()

Перемикає асоційовані об'єкти.

У деяких бізнес-сценаріях часто виникає потреба перемикати асоційовані об'єкти. Наприклад, користувач може додати товар до обраного, видалити його звідти, а потім знову додати. Метод toggle дозволяє швидко реалізувати подібну функціональність.

Підпис

  • async toggle(options: TargetKey | { tk?: TargetKey; transaction?: Transaction }): Promise<void>

Деталі

Метод toggle автоматично перевіряє, чи існує асоційований об'єкт. Якщо він існує, його буде видалено; якщо ні — додано.