# Problem sending an array of objects as message payload

**URL:** <https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983>\
**Category:** General\
**Created:** [15 June 2022 17:10 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983 "2022-06-15T17:10:26Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![PuckeyP](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/puckeyp/32/63446_2.png) [@PuckeyP](https://discourse.nodered.org/u/PuckeyP)\
**Post date:** [15 June 2022 17:10 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983/1 "2022-06-15T17:10:26Z")

</div>

Hi All,  
I would like to have a function node sending an array of objects in the message payload'm having a problem getting an array of objects send as the payload of the function below

```auto

var charge_data=[]; //Array for message objects
var ChargeTopic="ChargingData"
var TempObject;
var TempMessage; 

for (i = 0; i < msg.payload.energy.total; i++)
    {
    TempObject = 
        {
        StartCharging : msg.payload.energy.results[i].startDateTime,
        StopCharging : msg.payload.energy.results[i].endDateTime,
        TimeStamp : msg.payload.energy.results[i].startDateTime,
        Volume : msg.payload.energy.results[i].volume
        };

    TempMessage={payload:TempObject,topic:ChargeTopic};
    charge_data.push(TempMessage);
    }
node.warn({ "ChargeData" : charge_data});
    
return [charge_data];

```

It looks like the node sends each TempMessage separately.

```auto
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-25T23:18:08+02:00", StopCharging: "2022-05-26T08:44:00+02:00", TimeStamp: "2022-05-25T23:18:08+02:00", Volume: 56.71 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-24T17:32:10+02:00", StopCharging: "2022-05-25T08:03:20+02:00", TimeStamp: "2022-05-24T17:32:10+02:00", Volume: 20.05 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-23T15:49:45+02:00", StopCharging: "2022-05-24T12:19:46+02:00", TimeStamp: "2022-05-23T15:49:45+02:00", Volume: 47.3 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-19T17:18:06+02:00", StopCharging: "2022-05-20T08:16:05+02:00", TimeStamp: "2022-05-19T17:18:06+02:00", Volume: 28.63 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-19T13:27:54+02:00", StopCharging: "2022-05-19T14:19:19+02:00", TimeStamp: "2022-05-19T13:27:54+02:00", Volume: 9.19 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-18T21:31:54+02:00", StopCharging: "2022-05-19T07:53:24+02:00", TimeStamp: "2022-05-18T21:31:54+02:00", Volume: 35.42 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-16T21:28:21+02:00", StopCharging: "2022-05-17T07:48:48+02:00", TimeStamp: "2022-05-16T21:28:21+02:00", Volume: 14.43 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-15T00:39:44+02:00", StopCharging: "2022-05-15T15:45:53+02:00", TimeStamp: "2022-05-15T00:39:44+02:00", Volume: 44.49 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-13T17:05:48+02:00", StopCharging: "2022-05-14T13:47:58+02:00", TimeStamp: "2022-05-13T17:05:48+02:00", Volume: 31.36 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-12T18:35:33+02:00", StopCharging: "2022-05-13T08:20:25+02:00", TimeStamp: "2022-05-12T18:35:33+02:00", Volume: 51.21 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-08T17:53:35+02:00", StopCharging: "2022-05-09T08:05:21+02:00", TimeStamp: "2022-05-08T17:53:35+02:00", Volume: 18.97 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7ChargingData : msg.payload : Object
{ StartCharging: "2022-05-05T20:54:24+02:00", StopCharging: "2022-05-06T14:17:50+02:00", TimeStamp: "2022-05-05T20:54:24+02:00", Volume: 36.7 }
15/06/2022, 19:02:34node: 6ab265ae68c42bd7
ChargingData : msg.payload : Object
{ StartCharging: "2022-04-30T17:22:48+02:00", StopCharging: "2022-05-01T14:01:43+02:00", TimeStamp: "2022-04-30T17:22:48+02:00", Volume: 40.35 }

```

The node.warn however produces the output I want

```auto
function : (warn) object
ChargeData: array[13]
[0 … 9]
[10 … 12]

```

What's wrong?  
BR PPee

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [15 June 2022 17:38 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983/2 "2022-06-15T17:38:42Z")

</div>

> [@PuckeyP](#):
>
> `return [charge_data];`

If you want the array in a payload you need to send it in an object, if you return an array each element of the array is sent separately.  
try  
`return {payload:[charge_data]};`

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [15 June 2022 17:39 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983/3 "2022-06-15T17:39:19Z")

</div>

> [@PuckeyP](#):
>
> It looks like the node sends each TempMessage separately.

This is by design (returning an array indicates to node-red you want to send multiple messages)  
It is in the docs.

Instead, set a `msg` property (e.g. payload) with your data e.g...

```auto
var charge_data = []; //Array for message objects
//... do stuff
//... do stuff
//... do stuff
msg.payload = charge_data     
return msg;

```

---

<div class="post-metadata">

**Author:** ![Steve-Mcl](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/steve-mcl/32/4826_2.png) [@Steve-Mcl](https://discourse.nodered.org/u/Steve-Mcl)\
**Post date:** [15 June 2022 17:42 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983/4 "2022-06-15T17:42:06Z")

</div>

PS, FYI

My advice was

> [@Steve-Mcl](#):
>
> ```auto
> var charge_data = []; //Array for message objects
> //... do stuff
> //... do stuff
> //... do stuff
> msg.payload = charge_data     
> return msg;
> 
> ```

@E1cid advice was

> [@E1cid](#):
>
> return {payload:[charge\_data]};

Both are valid however, unless you know what you are doing, the general recommendation is to return the original message object (e.g. `return msg;` because there may be other properties in the msg needed downstream (e.g. link call nodes, http-nodes, tcp nodes etc)

PS2: the docs: [Writing Functions : Node-RED](https://nodered.org/docs/user-guide/writing-functions)

---

<div class="post-metadata">

**Author:** ![PuckeyP](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/puckeyp/32/63446_2.png) [@PuckeyP](https://discourse.nodered.org/u/PuckeyP)\
**Post date:** [15 June 2022 17:58 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983/5 "2022-06-15T17:58:20Z")

</div>

Got it. Thx all for the swift reply 👍 👍

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [29 June 2022 17:59 UTC](https://discourse.nodered.org/t/problem-sending-an-array-of-objects-as-message-payload/63983/6 "2022-06-29T17:59:15Z")

</div>

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.
