JavaScript запросы

Бывают случаи, когда вы хотите организовать операции, например, после запуска двух запросов вы хотите объединить и сохранить их результаты во временном состоянии, а затем открыть модальный. Этот процесс может быть сложным при объединении нескольких обработчиков событий в цепочку и, конечно же, не может быть выполнен в одной строке кода в {{ }}. Именно здесь в игру вступает JavaScript (JS) запрос. Он позволяет взаимодействовать с компонентами и запросами путем написания сложных JS-запросов для выполнения следующих операций:

  • Взаимодействие с компонентами пользовательского интерфейса

  • Запускающие запросы

  • Доступ к сторонним библиотекам JS

  • Настройка функций

Следующий пример предназначен для того, чтобы вы быстро поняли, что такое JS-запрос и как он работает.

Используйте JS-запрос для объединения результатов запроса

SQL-запрос query1 читает id, first_name, last_name и tid поля из таблицы players в базе данных PostgreSQL.

select id, first_name, last_name, tid from players

SQL-запрос query2 читает tid, city и name поля из таблицы teams в базе данных PostgreSQL.

select tid, city, name from teams

Используйте JS-запрос для левого соединения query1 и query2 на том же самом tid в следующих шагах.

  1. Создайте query3 и выберите Запустить JavaScript-код.

  2. Вставьте следующий код.

    return Promise.all([query1.run(), query2.run()]).then(
      data => join(data[0], data[1]),
      error => {}
    );
    
    function join(players, teams) {
      return players.map(player => {
        const team = teams.find(t => player.tid === t.tid);
        return { ...player, ...team };
      });
    }

    В этом фрагменте кода Promise.all() способ получает результаты query1 и query2, и join() метод объединяет их результаты после успешного запуска на основе значений tid поле.\

Возвращение данных

Воспользуйтесь return синтаксис для возврата результата. Например, следующий код возвращает 3.

Возвращаемый результат также может быть объектом Promisearrow-up-right. Например, query2.run() возвращает объект Promise.

circle-info

Оператор return не является необходимым для сценариев, в которых вы хотите опустить результаты.

Доступ к данным

Используйте JS-запросы для доступа к данным в вашем приложении. Обратите внимание, что нет необходимости использовать {{ }} обозначение.

Управляющий компонент

В JS-запросах вы можете использовать методы, предоставляемые компонентами, для взаимодействия с компонентами пользовательского интерфейса в вашем приложении. Такая операция не поддерживается встроенным JS-кодом в {{}}.

circle-exclamation

Выполнение запроса

run() метод и обратные вызовы

Вызов run() метод для выполнения других запросов, например:

Возвращаемое значение query.run() это обещание, поэтому вы можете прикрепить обратные вызовы для обработки успешного результата или ошибки.

Передача параметров

Вы можете передать параметры в методе run(), чтобы отделить реализацию запроса от его параметров.

Например, в SQL-запросе query1, вы можете определить name и status как параметры, которые необходимо передать для его выполнения.

Затем вы можете передать соответствующие параметры в query1.

Демо 1

Когда у вас есть несколько входных данных в приложении, запускающих один и тот же запрос, передача параметров этому запросу позволяет вам повторно использовать его в любом месте.

При обновлении реализаций SQL может возникнуть путаница, поскольку необходимо тщательно проверять и обновлять все повторяющиеся запросы. Теперь вы можете избавиться от повторяющегося SQL, введя параметры запроса.

Затем запустите этот запрос в Run JavaScript обработчиков событий в каждом из входных данных.

Последовательное выполенение запросов

Бывают случаи, когда нужно последовательно выполнить несколько запросов. Чтобы это сделать нужно сначала подготовить все необходимые запросы в приложении. И затем добавить блок JavaScript

Объявить функцию

Вы можете объявлять функции внутри JS-запроса для лучшей читабельности.

Добавление предварительно загруженных скриптов

Apeekflow поддерживает импорт сторонних JS-библиотек и добавление предопределенного JS-кода, например, добавление глобальных методов или переменных для повторного использования на уровне приложения или рабочей области. Настройки на уровне приложения можно найти в разделе ⚙️ > Другие > Скрипты и стиль.

Для настройки на уровне рабочей области перейдите в раздел Настройки > Дополнительно.

На вкладке JavaScript вы можете добавить предварительно загруженный код JavaScript для определения глобальных методов и переменных, а затем повторно использовать их в своем приложении. Информацию об импорте библиотек смотрите в разделе .

Ограничения

По соображениям безопасности в Apeekflow отключены несколько глобальных переменных и функций window. Пожалуйста, сообщайте в Telegramarrow-up-right, если у вас возникнут какие-либо проблемы.

Last updated