Heap.Nullable

Делает поле "nullable" (т.е. разрашает ему принимать значение null) и одновременно необязательным для указания при создании записи со значением по умолчанию null. Синтаксический сахар к Heap.NonRequired(Heap.Union(x, Heap.Null()), null).

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

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

import { Heap } from '@app/heap'
Heap.Nullable(fieldSchema)

Аргументы

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

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

JSON-схема anyOf с альтернативами fieldSchema и null, модификатором NonRequired и значением по умолчанию null..

Примеры

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

❤️ Made with love on Chatium

ООО "Чатиум"

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