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 PageHasManyRepository
Next PageРепозиторій
Повідомлення про переклад ШІ

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

#HasOneRepository

#Огляд

HasOneRepository — це репозиторій для асоціацій типу 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' },
});

// Отримайте репозиторій асоціації
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