Node.js如何比较两个流?

时间:2014-07-23 21:42:15

标签: javascript node.js stream node.js-stream

我正在阅读包含混合对象的许多文件。我有一个root流来流式传输对象:

// root stream
{"action": "action_type_a", "id": "1234"}
{"action": "action_type_b", id: "24566"}
{"action": "action_type_b", id: "0808098"}
{"action": "action_type_b", id: "8098098"}
{"action": "action_type_a", "id": "098098"}
{"action": "action_type_b", id: "08098"}

我将root流传输到2个单独的grep过滤流中,对action_type_a进行过滤,我们将调用A,看起来像:

// stream A
{"action": "action_type_a", "id": "1234"}
{"action": "action_type_a", "id": "098098"}

action_type_b B的一次过滤,如下所示:

// stream B
{"action": "action_type_b", id: "24566"}
{"action": "action_type_b", id: "0808098"}
{"action": "action_type_b", id: "8098098"}
{"action": "action_type_b", id: "08098"}

我还有一个单独的map个ID

// id map
{
 "1234" : "098098",
 ""098098" : "8098098"
}

A个对象上的ID可以与B个对象上的ID匹配

我想处理流A将每个对象ID与地图进行比较,然后处理B以查看流B中是否有相应的对象

我不知道在处理B中的每个对象之前如何在不排空流A的情况下处理此问题。

我的第一个想法是为B中的每个条目克隆A。那可能吗?

我目前的尝试是在流event-streams上使用es.map A并在地图功能内部尝试阅读B并将其与{进行比较{1}}我读了A我也写信给B。然而,这给了我:

B

错误,因为我在(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.

的地图中重新定义了B的听众

0 个答案:

没有答案