Heap.NonRequired

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

Важно понимать, что модификатор NonRequired позволяет не указывать поле только при создании новой записи (операция create). При обновлении (операция update) значения вложенного объекта, значине NonRequired-поля должно быть явно указано (см примеры ниже).

Модификатор Heap.NonRequired поддерживается и имеет смысл только для полей Heap.Object и полей верхнего уровня таблицы.

Применение / сигнатура

import { Heap } from '@app/heap'
Heap.NonRequired(fieldSchema, default)

Аргументы

  • fieldSchema: HeapSchema *
    Схема, описывающая тип поля, которое делаем необязательным при создании записи. Это может быть любой поддерживаемый тип поля heap-таблицы - простой или сложный.

  • default: fieldSchema serialized type *
    Значение по умолчанию для данного поля. Должно иметь тип, соответствующий fieldSchema в сериализованном виде. Подробнее о том, как работают значения по умолчанию, см. Руководство / Heap / Значения по умолчанию.

Возвращаемое значение

Аргумент fieldSchema c модификатором NonRequired.

Примеры

Демонстрация модификатора одновременно для поля верхнего уровня и вложенного объекта
const customers = Heap.Table('customers', {
  name: Heap.String(),
  stats: Heap.NonRequired(
    Heap.Object({
      ltv: Heap.NonRequired(Heap.Money(), [0, 'USD']),
      purchasesCount: Heap.NonRequired(Heap.Integer(), 0),
    }),
    { ltv: [0, 'USD'], purchasesCount: 0 },
  ),
})
await customers.create(ctx, { name: 'John Smith' })
// stats = { ltv: [0, 'USD'], purchasesCount: 0 }
const mary = await customers.create(ctx, { name: 'Mary', {
  stats: { ltv: new Money(0, 'EUR') },
})
// stats = { ltv: [0, 'EUR'], purchasesCount: 0 }
// при обновлении модификатор NonRequired не имеет силы
await customers.update(ctx, {
  id: mary.id,
  stats: { purchasesCount: 1 },
})
// ошибка! поле ltv обязательное

❤️ Made with love on Chatium

ООО "Чатиум"

Информация о компании