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».
См.также
Внешние ссылки