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
Auth
BaseAuth

@nocobase/cache

CacheManager
Кэш

@nocobase/cli

NocoBase CLI
Глобальные переменные окружения

@nocobase/client

Приложение
Плагин

@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
Модель потока
Ресурс рабочего процесса

@nocobase/logger

Логгер

@nocobase/server

AppCommand
Приложение
AuditManager
Контекст
Миграция
Плагин

@nocobase/sdk

Auth
Storage
Previous PageRelationRepository
Next Pagebelongs-to-repository
Уведомление о переводе ИИ

Эта документация была автоматически переведена ИИ.

#BelongsToManyRepository

BelongsToManyRepository — это репозиторий связей (Relation Repository), предназначенный для работы с отношениями типа BelongsToMany.

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

#Методы класса

#find()

Поиск связанных объектов

Signature

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

Details

Параметры запроса совпадают с Repository.find().

#findOne()

Поиск связанного объекта, возвращает только одну запись

Signature

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

#count()

Возвращает количество записей, соответствующих условиям запроса

Signature

  • async count(options?: CountOptions)

Type

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

#findAndCount()

Выполняет запрос к базе данных для получения набора данных и их общего количества по заданным условиям.

Signature

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

Type

type FindAndCountOptions = CommonFindOptions;

#create()

Создание связанного объекта

Signature

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

#update()

Обновление связанных объектов, соответствующих условиям

Signature

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

#destroy()

Удаление связанных объектов, соответствующих условиям

Signature

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

#add()

Добавление новых связанных объектов

Signature

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

Type

type PrimaryKeyWithThroughValues = [TargetKey, Values];

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

Details

Вы можете передать targetKey связанного объекта напрямую или передать targetKey вместе со значениями полей промежуточной таблицы.

Example

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()

Установка связанных объектов

Signature

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

Details

Параметры аналогичны методу add().

#remove()

Удаление связи с указанными объектами

Signature

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

Type

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

#toggle()

Переключение связанных объектов.

В некоторых бизнес-сценариях часто требуется переключать связанные объекты. Например, пользователь может добавить товар в избранное, затем удалить его из избранного и снова добавить. Метод toggle позволяет быстро реализовать подобную функциональность.

Signature

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

Details

Метод toggle автоматически проверяет, существует ли связанный объект. Если он существует, то объект удаляется; в противном случае — добавляется.