HeapTableRepo.isMyRecord
Позволяет определить - принадлежит ли переданный heap-объект данной heap-таблице. Является также "typescript type guard", то есть приводит тип переденной "бесформенной" переменной к типу heap-объекта таблицы с её полями.
Принадлежность опрелеляется через сравнение системного поля heapType у heap-объекта со свойством type таблицы.
Применение/сигнатура
table.isMyRecord(object)
-
Аргументы
- object:
any
Проверяемый объект.
- object:
-
Возвращаемое значение:
boolean
true, если переданная переменная является объектом с полемheapType, со значением, совпадающим со свойством type у данной таблицы. Во всех остальных случаях -false.
Примеры
Определение типа записи, на которую указывает GenericLink-поле.
const Orders = Heap.Table('orders', {
customer: Heap.GenericLink(),
})
const Orgs = Heap.Table('orgs', {
name: Heap.String(),
})
const Persons = Heap.Table('persons', {
firstName: Heap.String(),
lastName: Heap.String(),
})
async function getCustomerDisplayName(ctx: app.Ctx, order: typeof Orders.T): Promise<string> {
const customer = await orders.customer.get(ctx)
if (Orgs.isMyRecord(customer)) {
return customer.name
} else if (Persons.isMyRecord(customer)) {
return customer.firstName + ' ' + customer.lastName
} else {
throw 'unsupported customer type ' + customer.heapType }
}
