Как добавить объект в Node-RED msg.payload - PullRequest
0 голосов
/ 25 августа 2018

Мне нужен объект Accel как часть объекта полезной нагрузки:

  • msg.payload.Accel.x: 1
  • msg.payload.Accel.y: 2
  • msg.payload.Accel.z: 3

Как я могу добавить Accel и x, z, y к полезной нагрузке, в идеале используя узел изменений?

Я уже пробовал это:

msg.payload.Accel['x'] = 1;
return msg;

и получил ошибку:

"TypeError: Cannot set property 'x' of undefined"

1 Ответ

0 голосов
/ 25 августа 2018

Все зависит от того, с чего начинать msg.payload. Если вход в узел функции является строкой, то msg.payload будет строкой, и вы не можете просто добавить к ней произвольные свойства.

Если входные данные уже являются объектом, его можно расширить, но вам нужно создать промежуточные слои в объекте, прежде чем вы сможете добавить значение. например при условии следующего ввода msg.payload:

{
  foo: 25,
  bar: 'testing'
}

Чтобы добавить Accel.x, вам сначала нужно добавить ключ Accel, прежде чем пытаться добавить значение к Accel.x. С функциональным узлом вы бы сделали это так:

msg.payload.Accel = {};
msg.payload.Accel.x = 1;
msg.payload.Accel['y'] = 2;
return msg;

С узлом изменения это будет выглядеть примерно так, поскольку узел изменения добавит для вас пустые слои:

Change Node Settings

...