Делает поле "nullable" (т.е. разрашает ему принимать значение null
) и одновременно необязательным для указания
при создании записи со значением по умолчанию null
. Синтаксический сахар к
Heap.NonRequired(Heap.Union(x, Heap.Null()), null)
.
Модификатор Heap.Nullable поддерживается и имеет смысл только для полей Heap.Object и верхнего уровня таблицы.
import { Heap } from '@app/heap'
Heap.Nullable(fieldSchema)
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 обязательное