0

そのタイトルが理にかなっていることを願っています...私はJavascriptで何かをするのは初めてで、しばらく探していました。

Node-RED を使用して、JSON を含む HTTP POST を受信して​​います。次のデータが msg.req.body に投稿されており、 内のオブジェクトを取り出したいtargets:

    {
    "policy_url": "https://alerts.newrelic.com/accounts/xxxxx/policies/7477",
    "condition_id": 429539,
    "condition_name": "Error rate",
    "account_id": 773524,
    "event_type": "INCIDENT",
    "runbook_url": null,
    "severity": "CRITICAL",
    "incident_id": 50,
    "version": "1.0",
    "account_name": "Inc",
    "timestamp": 1436451988232,
    "details": "Error rate > 5% for at least 3 minutes",
    "incident_acknowledge_url": "https://alerts.newrelic.com/accounts/xxxxxx/incidents/50/acknowledge",
    "owner": "Jared Seaton",
    "policy_name": "Default Policy",
    "incident_url": "https://alerts.newrelic.com/accounts/xxxxxx/incidents/50",
    "current_state": "acknowledged",
    "targets": [{
        "id": "6002060",
        "name": "PHP Application",
        "link": "https://rpm.newrelic.com/accounts/xxxxxx/applications/6002060?tw[start]=1436450194&tw[end]=1436451994",
        "labels": {

        },
        "product": "APM",
        "type": "Application"
    }]
}

イベント管理システムにイベントを挿入するために、TCP 経由で送信する文字列をフォーマットしたいと考えています。だから私は次のことを試しました:

msg.payload = msg.req.body.targets[0] + "|" + msg.req.body.severity + "|" + msg.req.body.current_state + "|" + msg.req.body.details + "|" + msg.req.body.condition_name + "\n\n";
return(msg);

これにより、次のメッセージが表示されます。

[object Object]|CRITICAL|acknowledged|Error rate > 5% for at least 3 minutes|Error rate 

いくつか試してみましたが、null が返されるか、[object Object] が返されます。なんか近い気がする…

誰でも手伝ってもらえますか?

前もって感謝します。

4

2 に答える 2

0

target[0]はオブジェクトであるため、[オブジェクト オブジェクト] が表示されます。

代わりにmsg.req.body.targets[0].name、そのオブジェクトのプロパティにアクセスする必要があります。

結果メッセージは次のようになります

PHP Application|CRITICAL|acknowledged|Error rate > 5% for at least 3 minutes|Error rate 
于 2015-07-09T16:41:08.633 に答える
0

JSON.stringify() が必要です

msg.payload = JSON.stringify(msg.req.body.targets[0]) + "|" + msg.req.body.severity + "|" + msg.req.body.current_state + "|" + msg.req.body.details + "|" + msg.req.body.condition_name + "\n\n";
return(msg);

これにより、ターゲット配列の最初のスロットに格納されているオブジェクトが文字列表現に変換されます。

于 2015-07-09T16:47:55.720 に答える