Действие SQL

Рабочий процесс: узел SQLCommunity Edition+

Введение

В некоторых особых сценариях простые узлы действий с коллекцией, описанные выше, не справляются со сложными операциями. В таких случаях можно напрямую использовать узел «Действие SQL», чтобы база данных выполнила сложные SQL-операторы для обработки данных.

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

Установка

Встроенный плагин, установка не требуется.

Создание узла

В интерфейсе настройки рабочего процесса нажмите кнопку плюса («+») в потоке, чтобы добавить узел «Действие SQL»:

Добавление узла «Действие SQL»

Настройка узла

Настройка узла «Действие SQL»

Источник данных

Выберите источник данных для выполнения SQL.

Источник данных должен быть типом базы данных, например основной источник данных, PostgreSQL или другие источники, совместимые с Sequelize.

Содержимое SQL

Отредактируйте SQL-оператор. Сейчас поддерживается только один SQL-оператор.

Info

Начиная с версии v2.0.30, прямая текстовая подстановка переменных в SQL-запросах больше не поддерживается из соображений безопасности. Вместо неё необходимо использовать параметризованные запросы.

В SQL-запросах можно использовать переменные из контекста процесса, но их нужно указывать как заполнители в формате :variableName, например:

SELECT * FROM users WHERE id = :userId;

Список параметров

В приведённом выше SQL-запросе :userId является параметром. Значения параметров настраиваются в разделе «Список параметров». Имя параметра должно совпадать с именем, указанным в запросе, например userId, а значение можно выбрать из контекста процесса с помощью инструмента выбора переменных.

Результат выполнения узла

Начиная с v1.3.15-beta, результат выполнения узла «Действие SQL» — это массив «чистых» данных. До этого использовалась нативная структура возврата Sequelize с метаданными запроса (см.: sequelize.query()).

Например, следующий запрос:

select count(id) from posts;

Результат до v1.3.15-beta:

[
    [
        { "count": 1 }
    ],
    {
        // метаданные
    }
]

Результат после v1.3.15-beta:

[
    { "count": 1 }
]

Частые вопросы

Как использовать результат узла «Действие SQL»?

Если используется SELECT, результат запроса будет сохранён в узле в JSON-формате Sequelize. Его можно разобрать и использовать через плагин Вычисление JSON.

Запускает ли «Действие SQL» события коллекции?

Нет. «Действие SQL» отправляет SQL-оператор напрямую в базу данных для выполнения. Соответствующие CREATE / UPDATE / DELETE выполняются на стороне базы данных, а события коллекции происходят на уровне приложения Node.js (через ORM), поэтому события коллекции не запускаются.