Transformers

Трансформаторы предназначены для преобразования данных и повторного использования вашего многострочного кода JavaScript. Данные из запросов или компонентов могут не соответствовать вашим потребностям в бизнес-сценариях. Кроме того, вы можете использовать один и тот же блок кода несколько раз в приложении. В таких случаях трансформатор - это то, что вам нужно.

По сравнению со встроенным кодом в{{ }}, трансформаторы поддерживает многострочные блоки кода. И в отличие от JavaScript query, transformer предназначен для выполнения операций только для чтения, что означает, что вы не можете запустить запрос или обновить временное состояние внутри трансформатора.

Быстрый старт

Нажмите +Создать > Трансформатор в редакторе запросов, чтобы создать трансформатор.

Затем напишите свой JS-код в transformer. Вы можете нажать Предварительный просмотр, чтобы получить возвращаемое значение и получить к нему доступ с помощью transformerName.value в вашем приложении.

В следующем примере,transformer1 использует данные звездного рейтинга в rating1, чтобы подсчитать балл.

{{ }} запрещен внутри запроса transformer или JS. {{ }} используется только для создания однострочного JS-выражения, в то время как трансформатор или JS-запрос предназначены для нескольких строк JS-кода.

Варианты использования

Преобразование временной метки

Используйте moment().format() метод преобразования форматов временных меток. В следующем примере значение временной метки преобразуется в start_timeвозвращенный query1 к YYYY-MM-DD формату.

return query1.data.map(it => {
     return {
         ...it,
         start_time: moment(it.start_time).format('YYYY-MM-DD')
     };
})

Сортировка данных запроса

используйте _.orderBy() метод, предоставляемый Lodash для сортировки данных. Следующий пример возвращает query1.data отсортированный по amount столбец в порядке возрастания.

return _.orderBy(query1.data, 'amount', 'asc')

Объединить два запроса

В приведенном ниже примере кода показано, как объединить результаты запроса getUsers и getOrders по идентификатору пользователя.

const users = getUsers.data;
const userOrders = getOrders.data;
return users.map(user => ({
  ...user,
  orders : userOrders.find(order => order.customer_id === user.id),
}));

Операции, доступные только для чтения

Внутри преобразователя разрешены только операции, доступные только для чтения. Это означает, что вы не можете устанавливать значения компонентов или временные состояния, а также запускать запросы. Для этих операций используйте запросы JavaScript.

Например, вы не можете вызвать метод setText() текстового компонента в трансформаторе.

Вместо этого вызываем метод setText() в запросе JavaScript не сообщается об ошибке.

В другом примере трансформатор sort1 направлена на сортировку данных о getUsers для first_name, но sort() метод может изменить исходные данные, поэтому возникает ошибка.

В этом случае используйте следующий метод _.orderBy() вместо этого он был предоставлен Lodash.

Last updated