Версия:

get

Метод get получает на вход условия выборки и возвращает набор записей в массиве rows (res.data.rows). Работает через кэш.

Входные параметры. Интерфейс IAPIQueryParams

columns

columns?: string[]

Массив строк с перечислением колонок, которые должны быть в результирующем ответе. Система проверит наличие таких полей в профайле и не позволит запросить несуществующее поле или подставить SQL-выражение.

where / param_where. Условия выборки

По умолчанию условия отсутствуют (применяется только limit по умолчанию).

  1. Для класса или клиентского объекта может быть определен default_where, который накладывается на все запросы.
  2. where — это массив объектов условий (IOneWhere). Условие может быть либо непосредственным сравнением (поле, тип, значение), либо группой условий.

Интерфейс IOneWhere:

export interface IOneWhere {
   key?: string,
   type?: string
   val1?: any
   val2?: any
   group?: string
   comparisonType?: string
   is_role?: boolean,
   role_group?: string
   name?: string // info
   isGroup?: boolean // if set, items must be an array
   items?: IOneWhere[]
   isOr?: boolean // Определяет тип сравнения с предыдущим элементом (OR для всей группы)
   binary?: boolean
   s?: string // sql string for one where or for all items (if isGroup)
}

Функции-обертки: Реализованы в \models\system\CoreClass\prepareWhere.ts. Они упрощают создание объектов IOneWhere.

Пример использования групп:

const res = await r.api(User, 'get', {
    where: [
        whereEq('gender_sysname', 'MALE'),
        groupOr([
            whereEq('firstname', 'Alex'),
            whereEq('nickname', 'Alex')
        ])
    ]
})
if (res.code) return res
const users = res.data.rows
param_where

Устаревшая форма { [field: string]: any }. Тип сравнения всегда =. Не рекомендуется к использованию при наличии функций-оберток.

limit | page_no | offset
sort

sort?: { columns: string[], directions?: string[] } | string | false Определяет сортировку. По умолчанию берется из профайла Класса (обычно id DESC).

prepareSQL

prepareSQL?: boolean Если true, запрос не выполняется, а возвращается в виде строки SQL в res.data.sql. Это queryBuilder, учитывающий особенности ядра (join, профайлы, типы данных). Используется для последующей подстановки в whereInSelect.

countOnly

countOnly?: boolean Возвращает только количество записей по заданным условиям (игнорируя limit) в res.data.count.

enableInheritValues

enableInheritValues: boolean Для иерархических сущностей позволяет получать значения от родителей, если свое не установлено (поле должно иметь флаг is_inherit в профайле). Вместо значения возвращается объект IInheritedValue.

enableMultiValues

enableMultiValues: boolean Для динамических полей (связь один-ко-многим).

co_path___

Передается автоматически из клиентских компонентов. Используется для механизма динамических полей (например, характеристики товаров в зависимости от категории), чтобы ядро понимало контекст запроса и необходимые дополнительные поля.

group_by

group_by?: string | string[] Определяет группировку по заданным полям. Обычно используется вместе со specColumns.

specColumns

specColumns?: { [alias: string]: string } Позволяет указать SQL-выражения или функции агрегации (например, sum(amount)). Важно: Параметр запрещен для запросов с клиента.


Выходные параметры. Интерфейс IAPIResponse / IError

В случае ошибки возвращается инстанс MyError или UserError.

Успешный ответ (res.data):