У меня есть приложение Loopback 4, ключи свойств объекта запроса snake_case
, и они сопоставляются с именами столбцов нашей БД, которые StudlyCase
. Допустим, я хочу, чтобы имена свойств приложения были camelCase
. Таким образом, ключи данных пройдут следующий жизненный цикл:
Request Parameter (snake_case)
||
\/
Model Property (camelCase)
||
\/
MySQL Column (StudlyCase)
Loopback 4 заботится о сопоставлении между Свойством Модели и Столбцом MySQL. Он имеет декораторы, которые позволяют мне указывать имя столбца БД, связанное со свойством модели, используя те же ключи свойства, что и объект запроса, например:
@property({
mysql: {
columnName: 'FirstName',
},
type: 'string',
required: true,
})
first_name: string;
Я ищу пакет Express или другой простой способ применить пользовательское сопоставление ключей в объектах запроса до того, как они достигнут контроллера, а не на уровне модели данных, как позволяют декораторы Loopback.
У Laravel именно то, что я ищу. Они называют это слоем Eloquent API Resource
. Это просто массив отображений, например:
[
'first_name' => 'firstName',
'last_name' => 'lastName',
... more mappings ...
]
Но дело в том, что это сопоставление происходит еще до того, как контроллер получает объект запроса .
Как это можно сделать в Loopback 4 / Express / NodeJS?
UPDATE:
Похоже, Loopback 4 оборачивает Express в API-интерфейсы Sequence его @loopback/rest
пакета. Я опубликую еще одно обновление, как только у меня будет это полностью выяснено, а также ответ.
Что-то, что я забыл упомянуть, это то, что ключи свойств объекта Response также должны совпадать с ключами свойств объекта Request (snake_case
в моем случае). Я выложу решение TypeScript / LB4.