#node.js #node-red
#node.js #узел-красный
Вопрос:
У меня проблема. Я новичок в node red, я хочу вводить сразу много полезных нагрузок с разными темами. Я хотел сделать это с помощью функции, подобной в первом узле. Эта функция выглядит следующим образом:
msg.topic="ns=2;s=Target01.Nazwa.Nazwa[0];datatype=String"
msg.payload=global.get("nazwa")
return msg
msg.topic="ns=2;s=Target01.Nazwa.Nazwa[1];datatype=String"
msg.payload=global.get("nazwa2")
return msg
...
msg.topic="ns=2;s=Target01.Nazwa.Nazwa[9];datatype=String"
msg.payload=global.get("nazwa9")
return msg
Однако это не работает. 2-й узел работает, но в общей сложности у меня было бы более 150 блоков, подключенных к клиентскому блоку OPC UA. Итак, мой вопрос: кто-нибудь знает, есть ли способ вводить несколько полезных нагрузок с разными темами, предпочтительно с помощью функции, вместо того, чтобы делать это один за другим с помощью блоков ввода?
Ответ №1:
В документации объясняется, как отправлять несколько сообщений с узла состояния.
В имеющемся у вас коде, как только он достигает первого return
оператора, функциональный узел прекращает дальнейшую обработку, поэтому отправляется только одно сообщение.
Для отправки нескольких сообщений с функционального узла у вас есть два варианта.
- возвращает массив объектов сообщения для отправки.
- вызывайте
node.send(msg);
для каждого сообщения, которое вы хотите отправить.
Например:
return [
[
{ topic: "ns=2;s=Target01.Nazwa.Nazwa[0];datatype=String", payload: global.get("nazwa")},
{ topic: "ns=2;s=Target01.Nazwa.Nazwa[1];datatype=String", payload: global.get("nazwa2")},
{ topic: "ns=2;s=Target01.Nazwa.Nazwa[9];datatype=String", payload: global.get("nazwa9")}
]
]