logologo
시작
가이드
개발
플러그인
API
홈
English
简体中文
日本語
한국어
Español
Português
Deutsch
Français
Русский
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
FlowModel
플로우 리소스

@nocobase/logger

로거

@nocobase/server

AppCommand
애플리케이션
AuditManager
컨텍스트
마이그레이션
플러그인

@nocobase/sdk

Auth
Storage
Previous PageHasManyRepository
Next Page리포지토리
TIP

이 문서는 AI로 번역되었습니다. 부정확한 내용이 있을 경우 영어 버전을 참조하세요

#HasOneRepository

#개요

HasOneRepository는 HasOne 타입 연관 Repository입니다.

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' },
});

// 연관 Repository 가져오기
const userProfileRepository = User.repository
  .relation('profile')
  .of(user.get('id'));

// 또한 직접 초기화할 수도 있습니다
new HasOneRepository(User, 'profile', user.get('id'));

#클래스 메서드

#find()

연관 객체를 찾습니다.

시그니처

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

타입

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

상세 정보

쿼리 파라미터는 Repository.find()와 동일합니다.

예시

const profile = await UserProfileRepository.find();
// 연관 객체가 존재하지 않을 경우, null을 반환합니다.

#create()

연관 객체를 생성합니다.

시그니처

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

예시

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

연관 객체를 업데이트합니다.

시그니처

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

예시

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

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

#remove()

연관 객체를 제거합니다. 연관 관계만 해제하며, 연관 객체를 삭제하지는 않습니다.

시그니처

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

상세 정보

  • transaction: 트랜잭션 객체입니다. 트랜잭션 파라미터를 전달하지 않으면, 이 메서드가 자동으로 내부 트랜잭션을 생성합니다.

예시

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

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

#destroy()

연관 객체를 삭제합니다.

시그니처

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

상세 정보

  • transaction: 트랜잭션 객체입니다. 트랜잭션 파라미터를 전달하지 않으면, 이 메서드가 자동으로 내부 트랜잭션을 생성합니다.

예시

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

#set()

연관 객체를 설정합니다.

시그니처

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

타입

interface SetOption extends Transactionable {
  tk?: TargetKey;
}

상세 정보

  • tk: 설정할 연관 객체의 targetKey입니다.
  • transaction: 트랜잭션 객체입니다. 트랜잭션 파라미터를 전달하지 않으면, 이 메서드가 자동으로 내부 트랜잭션을 생성합니다.

예시

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

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

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