Бывают случаи, когда вы хотите организовать операции, например, после запуска двух запросов вы хотите объединить и сохранить их результаты во временном состоянии, а затем открыть модальный. Этот процесс может быть сложным при объединении нескольких обработчиков событий в цепочку и, конечно же, не может быть выполнен в одной строке кода в {{ }}. Именно здесь в игру вступает 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, namefrom teams
Используйте JS-запрос для левого соединения query1 и query2 на том же самом tid в следующих шагах.
Создайте query3 и выберите ЗапуститьJavaScript-код.
В этом фрагменте кода Promise.all() способ получает результаты query1 и query2, и join() метод объединяет их результаты после успешного запуска на основе значений tid поле.\
Возвращение данных
Воспользуйтесь return синтаксис для возврата результата. Например, следующий код возвращает 3.
Возвращаемый результат также может быть объектом Promise. Например, query2.run() возвращает объект Promise.
Оператор return не является необходимым для сценариев, в которых вы хотите опустить результаты.
Доступ к данным
Используйте JS-запросы для доступа к данным в вашем приложении. Обратите внимание, что нет необходимости использовать {{ }} обозначение.
Управляющий компонент
В JS-запросах вы можете использовать методы, предоставляемые компонентами, для взаимодействия с компонентами пользовательского интерфейса в вашем приложении. Такая операция не поддерживается встроенным JS-кодом в {{}}.
Метод input 1.setValue() (или другие методы компонента) является асинхронным и возвращает объект Promise. Обращение к input1.value сразу после установки значения input1 не возвращает обновленное значение.
Выполнение запроса
run() метод и обратные вызовы
Вызов run() метод для выполнения других запросов, например:
Возвращаемое значение query.run() это обещание, поэтому вы можете прикрепить обратные вызовы для обработки успешного результата или ошибки.
Передача параметров
Вы можете передать параметры в методе run(), чтобы отделить реализацию запроса от его параметров.
Например, в SQL-запросе query1, вы можете определить name и status как параметры, которые необходимо передать для его выполнения.
Затем вы можете передать соответствующие параметры в query1.
Демо 1
Когда у вас есть несколько входных данных в приложении, запускающих один и тот же запрос, передача параметров этому запросу позволяет вам повторно использовать его в любом месте.
При обновлении реализаций SQL может возникнуть путаница, поскольку необходимо тщательно проверять и обновлять все повторяющиеся запросы. Теперь вы можете избавиться от повторяющегося SQL, введя параметры запроса.
Затем запустите этот запрос в Run JavaScript обработчиков событий в каждом из входных данных.
Последовательное выполенение запросов
Бывают случаи, когда нужно последовательно выполнить несколько запросов. Чтобы это сделать нужно сначала подготовить все необходимые запросы в приложении. И затем добавить блок JavaScript
Объявить функцию
Вы можете объявлять функции внутри JS-запроса для лучшей читабельности.
Добавление предварительно загруженных скриптов
Apeekflow поддерживает импорт сторонних JS-библиотек и добавление предопределенного JS-кода, например, добавление глобальных методов или переменных для повторного использования на уровнеприложения или рабочейобласти. Настройки на уровне приложения можно найти в разделе ⚙️ > Другие > Скрипты и стиль.
Для настройки на уровне рабочей области перейдите в раздел Настройки > Дополнительно.
На вкладке JavaScript вы можете добавить предварительно загруженный код JavaScript для определения глобальных методов и переменных, а затем повторно использовать их в своем приложении. Информацию об импорте библиотек смотрите в разделе .
Ограничения
По соображениям безопасности в Apeekflow отключены несколько глобальных переменных и функций window. Пожалуйста, сообщайте в Telegram, если у вас возникнут какие-либо проблемы.
var data = [input1.value, query1.data, fileUpload.files[0].name];
// установите значение параметра input1 равным Hello.
input1.setValue("Hello");
return queryByName.run(); // запустите запрос, и он вернет обещание
return queryByName.run().then(
data => { // после успешного выполнения запроса
return "hello, " + data.user_fullname;
},
error => { // после неудачного выполнения запроса
// используйте встроенную функцию сообщения, чтобы вывести сообщение об ошибке
message.error("An error occured when fetching user: " + error.message);
}
);
// Является ли первое число кратным второму числу
function isMultiple(num1, num2) {
return num1 % num2 === 0;
}
// Вызовите библиотеку моментов, чтобы вернуть текущую дату
function getCurrentDate() {
return moment().format("YYYY-MM-DD");
}