2017-09-02 1 views
-1

Meine Lambda-Funktion wird mit einer IoT-Regel (MQTT-Nachricht in JSON) aufgerufen. Ich versuche einfach, die Werte zu protokollieren, und die Punktfelder der obersten Ebene funktionieren gut, verschachtelte Objekte im JSON werden jedoch als "undefiniert" angesehen. Ich habe versucht, JSON.stringify diese ohne Erfolg. Irgendwelche Ideen?AWS Lambda Javascript JSON-Objekt undefined

'use strict'; 
console.log('Loading function'); 
exports.handler = (event, context, callback) => { 
    console.log('Received event:', JSON.stringify(event, null, 2)); // Complete message 
    console.log('Received event.ApiVersion:',event.ApiVersion); 
    console.log('Received event.CollectionID:',event.CollectionId); 
    console.log('Received event.TagData.Time:',event.TagData.Time); //undefined 

    var TimeObj = {}; 
    TimeObj = event.TagData.Time; 
    console.log('Received event TimeObj:',TimeObj); //undefined 
}; 

Hier sind die Wolke Uhr logs/Ergebnisse:

Loading function 
Received event: 
{ 
"FormatId": "TagValues", 
"ApiVersion": 1, 
"CollectionId": 2, 
"TagData": [ 
    { 
     "Time": "2017-09-02T11:06:35.917000+02:00", 
     "Values": { 
      "var1": 16777216, 
      "var2": 7534 
     } 
    } 
] 
} 
Received event.ApiVersion: 1 
Received event.CollectionID: 2 
Received event.TagData.Time: undefined 
Received event TimeObj: undefined 

Antwort

1

TagData ein Array ist und nicht ein Objekt ist, so kehrt TagData.Timeundefined.

ändern

event.TagData.Time; 

Um

event.TagData[0].Time; 
+0

Vielen Dank! Das funktioniert. – user2883655