Javascript RxJS分组发出的事件节点

Javascript RxJS分组发出的事件节点,javascript,node.js,rxjs,observable,Javascript,Node.js,Rxjs,Observable,我正在查询数据库,并以事件“db_row_received”的逐行流的形式检索结果。我正在尝试按公司Id对这些结果进行分组,但在订阅中没有得到任何输出 db行格式如下所示 // row 1 { companyId: 50, value: 200 } // row 2 { companyId: 50, value: 300 } // row 3 { co

我正在查询数据库,并以事件“db_row_received”的逐行流的形式检索结果。我正在尝试按公司Id对这些结果进行分组,但在订阅中没有得到任何输出

db行格式如下所示

 // row 1
    {
        companyId: 50,
        value: 200
    }
    // row 2   
    {
        companyId: 50,
        value: 300
    }
    // row 3 
    {
        companyId: 51,
        value: 400
    }
代码:

预期产出:

value: 500    // from the group with companyId 50
value: 400    // from the group with companyId 51
实际产量: 订阅不输出任何内容,但在使用Rx.Observable.fromArray(someArray)时有效


有谁能告诉我哪里出错了吗?

所以问题是
reduce
仅当底层流
完成时才会产生一个值。由于事件发射器是某种无限源,因此它始终处于活动状态

请看下面的代码段-第一个示例完成,另一个没有

const数据=[
{k:'A',v:1},
{k:'B',v:10},
{k:'A',v:1},
{k:'B',v:10},
{k:'A',v:1},
{k:'B',v:10},
{k:'A',v:1},
{k:'A',v:1},
{k:'A',v:1},
];
从(数据)中可观察到的Rx
.concatMap(d=>Rx.Observable.of(d).延迟(100))
.groupBy(d=>d.k)
.mergeMap(组=>group.reduce((acc,值)=>{
acc.sum+=值v;
返回acc;
},{key:group.key,sum:0})
.do(d=>console.log('RESULT',d.key,d.sum))
.subscribe();
从(数据)中可观察到的Rx
.concatMap(d=>Rx.Observable.of(d).延迟(100))
.merge(Rx.Observable.never())//MERGIN never-IN
//.take(data.length)//取消注释
.groupBy(d=>d.k)
.mergeMap(组=>group.reduce((acc,值)=>{
acc.sum+=值v;
返回acc;
},{key:group.key,sum:0})
.do(d=>console.log('RESULT-NEVER-WILL NOT print',d))
.subscribe()

您确定
eventEmitter
实际上正在发送具有给定名称的事件。代码的其余部分看起来还可以。您是否尝试过grouped.subscribe(数据=>{console.log(数据);});看看这群人works@Yury,是,eventEmitter确实发出一行。@oliv37是,分组方式有效。我开始认为这是一个问题,可以将console.log添加到reduce函数中,例如:{console.log(acc);return acc+v.value;}。我认为它不起作用,因为它不知道什么是最后的事件。这就解释了为什么它与数组一起工作
value: 500    // from the group with companyId 50
value: 400    // from the group with companyId 51