logologo
Start
Manual
Utveckling
Plugins
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
Start
Manual
Utveckling
Plugins
API
logologo
API-översikt

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
Globala Miljövariabler

@nocobase/client

Applikation
Plugin

@nocobase/database

Samling
Fält

interfaces

BaseInterface
Filteroperatorer

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repository

shared

create-options
destroy-options
find-one
Tomt läge
transaction
update-options

@nocobase/data-source-manager

DataSourceManager
Datakälla (abstrakt)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Datakällshanterare
Flödeskontext
FlowEngine
FlowModel
Flödesresurs

@nocobase/logger

Logger

@nocobase/server

AppCommand
Applikation
AuditManager
Kontext
Migrering
Plugin

@nocobase/sdk

Auth
Lagring
Previous PageRelationRepository
Next Pagebelongs-to-repository
TIP

Detta dokument har översatts av AI. För eventuella felaktigheter, se den engelska versionen

#BelongsToManyRepository

BelongsToManyRepository är ett Relation Repository för att hantera BelongsToMany-relationer.

Till skillnad från andra relationstyper måste BelongsToMany-relationer registreras via en mellantabell. När ni definierar en associerad relation i NocoBase kan en mellantabell skapas automatiskt, eller så kan ni uttryckligen ange en.

#Klassmetoder

#find()

Hittar associerade objekt.

Signatur

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

Detaljer

Frågeparametrarna är konsekventa med Repository.find().

#findOne()

Hittar ett associerat objekt och returnerar endast en post.

Signatur

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

#count()

Returnerar antalet poster som matchar frågevillkoren.

Signatur

  • async count(options?: CountOptions)

Typ

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

#findAndCount()

Frågar databasen efter en datamängd och det totala antalet under specifika villkor.

Signatur

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

Typ

type FindAndCountOptions = CommonFindOptions;

#create()

Skapar ett associerat objekt.

Signatur

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

#update()

Uppdaterar associerade objekt som uppfyller villkoren.

Signatur

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

#destroy()

Tar bort associerade objekt som uppfyller villkoren.

Signatur

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

#add()

Lägger till nya associerade objekt.

Signatur

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

Typ

type PrimaryKeyWithThroughValues = [TargetKey, Values];

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

Detaljer

Ni kan direkt skicka in det associerade objektets targetKey, eller skicka in targetKey tillsammans med fältvärdena från mellantabellen.

Exempel

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

// Skicka in targetKey
PostTagRepository.add([t1.id, t2.id]);

// Skicka in fält från mellantabellen
PostTagRepository.add([
  [t1.id, { tagged_at: '123' }],
  [t2.id, { tagged_at: '456' }],
]);

#set()

Ställer in associerade objekt.

Signatur

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

Detaljer

Parametrarna är desamma som för add().

#remove()

Tar bort associationen med de angivna objekten.

Signatur

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

Typ

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

#toggle()

Växlar associerade objekt.

I vissa affärsscenarier är det ofta nödvändigt att växla associerade objekt. Till exempel kan en användare favoritmarkera en produkt, ta bort favoritmarkeringen och sedan favoritmarkera den igen. Metoden toggle kan användas för att snabbt implementera liknande funktionalitet.

Signatur

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

Detaljer

Metoden toggle kontrollerar automatiskt om det associerade objektet redan finns. Om det finns tas det bort; om det inte finns läggs det till.