Проблема
Существует таблица в которой есть ссылка на другую таблицу:
Table1: cd_userinroutes
Columns:
fn_user: integer,
fn_route: text
Table2: cd_routes
Columns:
id: uuid
fn_type: number
На примере видно, что таблица cd_userinroutes имеет ссылку на cd_routes при помощи колонки fn_route. Требуется достать все записи cd_routes у которых указан пользователь fn_user. В обычном sql это можно сделать при помощи JOIN, но в текущей реализации простого ___ (тройного подчеркивания) недостаточно.
Для решения данной проблемы создан механизм alias. Он позволяет создать следующий запрос:
Решение
[{
"action": "cd_userinroutes",
"method": "Query",
"data": [{
"alias":"cd_routes", // (1)
"select": "fn_route___fn_type as fn_type" // (2)
}],
"type": "rpc",
"tid": 1
}]
Создается RPC запрос в базу данных для получения информации по таблице cd_userinroutes (но мы помним, что нам нужно таблица cd_routes). Далее в массиве data создается элемент в котором одно из свойств называется alias (1). В котором и требуется указать нужную нам таблицу. Далее в select указываем список полей (2) которые нам нужно достать используя правило. В конце поля добавляем наименование колонки которое должно быть в cd_routes.
Результат запроса
[
{
...
"result": {
"records": [
{
"fn_type": 1 // (1)
}
],
"total": 1
},
...
"method": "Query",
"action": "cd_routes", // (2)
"rpcTime": 17
}
]
В результате мы видим, что колонка fn_type доступна в результате запроса (1) и имя action заменено на cd_routes.