0

私はnode.jsとredisを使用してjsonでメッセージを受信して​​いますが、プレーンテストのメッセージは次のようになっています

362S29MM09 36072 36071 ARRIVAL ARRIVAL ON TIME
362S29MM09 36075 36072 DEPARTURE DEPARTURE LATE
362K27MM09 36052 36050 ARRIVAL ARRIVAL ON TIME

最初のメッセージと2番目のメッセージは同じであるため、これらのメッセージを最初のフィールドでグループ化したいので、アンダースコアを使用してメッセージをグループ化しますが、グループ化されたメッセージを解析する方法がわかりません。

{'type':362S29MM09,'st1':36072 ,'st2':36071 ,'event':ARRIVAL,'next_event':ARRIVAL,'status':LATE}

var groups =  underscore.groupBy(msg, function(obj){ return  obj.train_id}) ;   
console.log(groups);

しかし、それは表示されるだけです

{ undefined:
   [ { header: [Object], body: [Object] },
     { header: [Object], body: [Object] },
     { header: [Object], body: [Object] } ] }

メッセージをさらに解析するにはどうすればよいですか。

4

1 に答える 1

1

あなたの実際の質問が何であるかはよくわかりません(あなたはtrain_id存在しないものをグループ化していてheaderbodyどこから来ているのですか?)。

グループ化する場合はtype、次のように使用できます。

var underscore = require('underscore');

var msgs = [ 
{'type':'362S29MM09','st1':36072 ,'st2':36071 ,'event':'ARRIVAL','next_event':'ARRIVAL','status':'ON TIME'},
{'type':'362S29MM09','st1':36075 ,'st2':36072 ,'event':'DEPARTURE','next_event':'DEPARTURE','status':'LATE'},
{'type':'362K27MM09','st1':36052 ,'st2':36050 ,'event':'ARRIVAL','next_event':'ARRIVAL','status':'ON TIME'}
];

var groups = underscore.groupBy(msgs, function(obj){ return obj.type; }) ; 
console.log(groups);

これにより、次の出力が得られます。

{ '362S29MM09': 
   [ { type: '362S29MM09',
       st1: 36072,
       st2: 36071,
       event: 'ARRIVAL',
       next_event: 'ARRIVAL',
       status: 'ON TIME' },
     { type: '362S29MM09',
       st1: 36075,
       st2: 36072,
       event: 'DEPARTURE',
       next_event: 'DEPARTURE',
       status: 'LATE' } ],
  '362K27MM09': 
   [ { type: '362K27MM09',
       st1: 36052,
       st2: 36050,
       event: 'ARRIVAL',
       next_event: 'ARRIVAL',
       status: 'ON TIME' } ] }
于 2013-03-09T13:48:42.630 に答える