2017-09-02 16 views
-1

私のラムダ関数は、IoTルール(JSONのMQTTメッセージ)によって呼び出されます。私は単に値をログに記録しようとしており、トップレベルのドットフィールドは正常に機能しますが、JSONのネストされたオブジェクトは「未定義」とみなされます。私はJSONにしようとしました。何か案は?ここでAWSラムダJavascript JSONオブジェクト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 
}; 

クラウドウォッチログ/結果は以下のとおりです。

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 

答えて

1

TagDataは、配列ではなくオブジェクトであるので、TagData.Time戻りundefined

event.TagData[0].Time; 
+0

に変更

event.TagData.Time; 

ありがとうございました!それは動作します。 – user2883655