Node-RED:Библиотеки/node-red/Switch

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Нода «Switch»

Направляет сообщения по нужным маршрутам, исходя из их позиции в серии сообщений или значений.

Подробное описание

Когда сообщение прибывает в ноду «Switch», она сверяется с заданными внутри нее правилами, а затем направляет это сообщение в порт, который соответствует всем заданным правилам.

Опционально ноду «Switch» можно настроить так, чтобы она перестала сверяться с правилами после самого первого совпадения.

Правило можно применить к отдельному свойству сообщения, свойству из глобального контекста, свойству из контекста потока или результату JSONata-выражения.

Правила

Есть 4 типа правил:

  • Правила «value rules» – применяются относительно заданного свойства
  • Правила «sequence rules» – применяются относительно серии сообщений (например, сгенерированных нодой «Split»)
  • Правило «JSONata exp» – здесь можно задать JSONata-выражение, которое будет применено ко всему сообщению. Если выражение вернет «true», это будет значить, что совпадение есть
  • Правило «otherwise» – на случай, если ни одно из других правил не сработает

Примечания

Правила «is true», «is false» и «is null» сравнивают только относительно своих типов данных. То есть они, выполняя сравнение, не выполняют конвертирования данных.

Правило «is empty» сработает на строках, массивах и буферах с длиной «0» или на объектах без свойств. На значениях «null» и «undefined» оно не сработает.

Управление сериями сообщений

По умолчанию нода «Switch» не модифицирует свойство «msg.parts», которое есть у сообщений, являющихся частью серии сообщений.

Но если вы хотите сгенерировать новые серии сообщений для каждого сработавшего правила, поставьте галочку рядом с пунктом «recreate message sequences» (он находится в самом низу меню редактирования ноды «Switch»). В этом режиме нода «Switch» будет собирать сообщения, прошедшие проверку, в буфер, а затем, когда их наберется достаточно, отправит эту серию сообщений дальше в поток. То, сколько сообщений может быть в этом буфере, задается в настройке среды выполнения «nodeMessageBufferMaxLength».

См.также

Внешние ссылки