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

@nocobase/auth

AuthManager
Auth
BaseAuth

@nocobase/cache

CacheManager
Cache

@nocobase/cli

NocoBase CLI
Variabel Lingkungan Global

@nocobase/client

Aplikasi
plugin

@nocobase/database

Koleksi
Bidang

interfaces

BaseInterface
Operator Filter

RelationRepository

BelongsToManyRepository
belongs-to-repository
HasManyRepository
HasOneRepository
Repositori

shared

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

@nocobase/data-source-manager

DataSourceManager
DataSource (abstrak)
ICollectionManager
ICollection
IField
IModel
IRepository

@nocobase/flow-engine

Manajer Sumber Data
FlowContext
FlowEngine
FlowModel
Sumber Daya Alur Kerja

@nocobase/logger

Logger

@nocobase/server

AppCommand
Aplikasi
AuditManager
Konteks
Migrasi
Plugin

@nocobase/sdk

Auth
Penyimpanan
Previous PageHasManyRepository
Next PageRepositori
TIP

Dokumen ini diterjemahkan oleh AI. Untuk ketidakakuratan apa pun, silakan lihat versi bahasa Inggris

#HasOneRepository

#Gambaran Umum

HasOneRepository adalah repository untuk asosiasi tipe HasOne.

const User = db.collection({
  name: 'users',
  fields: [
    { type: 'hasOne', name: 'profile' },
    { type: 'string', name: 'name' },
  ],
});

const Profile = db.collection({
  name: 'profiles',
  fields: [{ type: 'string', name: 'avatar' }],
});

const user = await User.repository.create({
  values: { name: 'u1' },
});

// Mendapatkan repository asosiasi
const userProfileRepository = User.repository
  .relation('profile')
  .of(user.get('id'));

// Dapat juga diinisialisasi secara langsung
new HasOneRepository(User, 'profile', user.get('id'));

#Metode Kelas

#find()

Mencari objek terkait

Tanda Tangan

  • async find(options?: SingleRelationFindOption): Promise<Model<any> | null>

Tipe

interface SingleRelationFindOption extends Transactionable {
  fields?: Fields;
  except?: Except;
  appends?: Appends;
  filter?: Filter;
}

Detail

Parameter kueri sama dengan Repository.find().

Contoh

const profile = await UserProfileRepository.find();
// Mengembalikan null jika objek terkait tidak ada

#create()

Membuat objek terkait

Tanda Tangan

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

Contoh

const profile = await UserProfileRepository.create({
  values: { avatar: 'avatar1' },
});

console.log(profile.toJSON());
/*
{
  id: 1,
  avatar: 'avatar1',
  userId: 1,
  updatedAt: 2022-09-24T13:59:40.025Z,
  createdAt: 2022-09-24T13:59:40.025Z
}
*/

#update()

Memperbarui objek terkait

Tanda Tangan

  • async update(options: UpdateOptions): Promise<Model>

Contoh

const profile = await UserProfileRepository.update({
  values: { avatar: 'avatar2' },
});

profile.get('avatar'); // 'avatar2'

#remove()

Menghapus objek terkait. Ini hanya melepaskan asosiasi, tidak menghapus objek terkait.

Tanda Tangan

  • async remove(options?: Transactionable): Promise<void>

Detail

  • transaction: Objek transaksi. Jika parameter transaksi tidak diberikan, metode ini akan secara otomatis membuat transaksi internal.

Contoh

await UserProfileRepository.remove();
(await UserProfileRepository.find()) == null; // true

(await Profile.repository.count()) === 1; // true

#destroy()

Menghapus objek terkait

Tanda Tangan

  • async destroy(options?: Transactionable): Promise<Boolean>

Detail

  • transaction: Objek transaksi. Jika parameter transaksi tidak diberikan, metode ini akan secara otomatis membuat transaksi internal.

Contoh

await UserProfileRepository.destroy();
(await UserProfileRepository.find()) == null; // true
(await Profile.repository.count()) === 0; // true

#set()

Mengatur objek terkait

Tanda Tangan

  • async set(options: TargetKey | SetOption): Promise<void>

Tipe

interface SetOption extends Transactionable {
  tk?: TargetKey;
}

Detail

  • tk: targetKey dari objek terkait yang akan diatur.
  • transaction: Objek transaksi. Jika parameter transaksi tidak diberikan, metode ini akan secara otomatis membuat transaksi internal.

Contoh

const newProfile = await Profile.repository.create({
  values: { avatar: 'avatar2' },
});

await UserProfileRepository.set(newProfile.get('id'));

(await UserProfileRepository.find()).get('id') === newProfile.get('id'); // true