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

请注意,第一条和第二条消息是相同的,所以我希望将这些消息按第一个字段分组,我使用下划线对消息进行分组,但我不知道如何解析分组的消息。

{'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哪些不存在,header以及body从哪里来?)。

如果你想分组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 回答