GenericLink
Класс, экземпляры которого представляют в runtime-значения полей heap-таблиц, объявленных через Heap.GenericLink.
Предоставляет удобный интерфейс для работы со ссылкой.
Использование этого класса отдельно, вне значения поля таблицы, не несёт никакой пользы и не поддерживается.
Свойства и методы
-
type*:
string
Идентификатор таблицы, на запись которой указывает данная ссылка. Совпадает со свойством type соответсвующей таблицы. -
id:
string
Уникальный идентификатор конкретной записи, на которую указывает данное значение поля. -
get(ctx: app.Ctx):
Promise<HeapObject>
"Синтаксический сахар" к выполнению запроса getById к целевой таблице с целевым идентификатором. Возвращает heap-объект, на который указывает текущее значение ссылки.В отличие от RefLink.get, возвращаемый объект имеет typescript-тип общего heap-объекта без привязки к конкретному типу таблицы, поскольку заранее не известно - на какую таблицу указывает ссылка. Для уточнения типа объекта рекомендуется использовать метод isMyRecord.
- ctx:
app.Ctx
Контекст запроса. Используется для внутренней реализации, а также позволяет выполнить запрос в нужной транзакции.
- ctx:
-
getTargetTableRepo(ctx: app.Ctx):
Promise<HeapTableRepo>
Вовзращает репозиторий таблицы, на которую указывает текущее значение поля. Обратите внимание, что метод асинхронный.- ctx:
app.Ctx
Контекст запроса. Используется для внутренней реализации.
- ctx:
Примеры
Выяснение названия объекта, на основе которого была создана задача.
const Tasks = Heap.Table('tasks', {
title: Heap.String(),
basedOn: Heap.GenericLink(),
})
const task = await Tasks.getById(ctx, req.params.id)
const basedOn = await task.basedOn.get(ctx)
const baseOnDisplayName = Orders.isMyRecord(baseOn)
? 'Order #' + basedOn.num
: Tasks.isMyRecord(basedOn)
? 'Task ' + basedOn.title
: 'Unexpected based-on object ' + task.basedOn.type + ' ' + task.basedOn.id
