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
      Контекст запроса. Используется для внутренней реализации, а также позволяет выполнить запрос в нужной транзакции.
  • getTargetTableRepo(ctx: app.Ctx): Promise<HeapTableRepo>
    Вовзращает репозиторий таблицы, на которую указывает текущее значение поля. Обратите внимание, что метод асинхронный.

    • ctx: app.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

❤️ Made with love on Chatium

ООО "Чатиум"

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