2017-03-20 127 views
0

我還是這個新手。我所做的是,我試過發送一個http請求,我試圖通過我的自定義節點傳遞下面的響應。味精物體看起來像:如何提取我從http請求中獲取的msg對象?

[ 
    { 
    "userId": 1, 
    "deviceId": 2, 
    "type": "SM", 
    "eventName": "TemparatureChanged", 
    "stateName": "update", 
    "eventParameters": [ 
     { 
     "name": "temparature", 
     "type": "Double", 
     "value": 35.01 
     } 
    ] 
    } 
] 

我怎麼能檢索來自eventParameters以上陣列的

我想下面的功能節點:

var data = msg.eventParameters[0].value; 
return data; 

而且我想只有通過調試節點打印上面的屬性。我的調試節點包含msg.payload,我也試圖將它作爲一個完整的味精對象仍然沒有運氣。

在我的自定義節點(IOT-輸入js文件我有這樣的:

this.on('input', function (msg) { 
      node.warn("I saw a payload: "+msg.payload); 
      // in this example just send it straight on... should process it here really 
      node.send(msg); 
}); 

我的流程是這樣的:

enter image description here

我要去哪裏錯誤?任何幫助可以感激!

回答

1

你不說你來自哪裏,在這個問題上有你的樣品味精,但如果它能夠從console.log在您的節點,然後你有什麼是msg.payload而不是msg

所以,你應該使用類似:

var data = msg.payload[0].eventParameters[0].value; 

而且還你不應該只是從功能節點返回data,它應該是一個msg對象,因此這樣的事情:

var data = msg.payload[0].eventParameters[0].value; 
msg.payload = data; 
return msg.payload; 
+0

真棒,這個作品!在第二行只有一個小錯字(** msg.payload **)。 – Kulasangar

1

msg是一個數組,所以它應該是:

var data = msg[0].eventParameters[0].value; 
+0

我嘗試了上述,但它給**「TypeError:無法讀取未定義的**屬性'eventParameters'。這可能是我的流程有問題嗎?但是當我通過味精時,它實際上是打印整個對象。 – Kulasangar

+1

可能是一個完整的代碼片段可以幫助。 –

+0

是的,我可以。函數節點的代碼片段?或我的自定義節點的js? – Kulasangar