我有一系列描述实体关系的数据。 我的代码:
services
.tree
.collection
.find()
.$
.pipe(
switchMap(from),
groupBy((value) => value.get('parent_id')),
mergeScan((memo, group$) => {
const key = group$.key;
return group$.pipe(
map((value) => {
if(!(key in memo)) {
memo[key] = [];
}
memo[key].push(value);
return memo;
})
)
}, {}),
)
.subscribe((data) => console.log('data', data));
但是有很多日志,而不是一个日志。如何将所有内容合并到一个管道中,以最后只有一个数据?
答案 0 :(得分:1)
我认为CodeSandbox中正在发生两件事(由于看不到您所看到的内容,因此我无法直接在您的桌面编辑器中说出什么内容。)
console.log(object)
不会在记录时显示您对象的值 ,而是显示一个三角形,它实际上是指向该对象的一个指针,直到您实际求值单击它,到此为止的时间已被完全填满。要使console.log在记录日志时为您提供值(即时间快照),只需将语句更改为:console.log("data", JSON.stringify(data))
。在this question and its answers中有更多相关内容。last()
之后添加运算符mergeScan()
。从CodeSandbox中完成代码:
of(incoming)
.pipe(
switchMap(from),
groupBy(value => value.parent_id),
mergeScan((memo, group$) => {
const key = group$.key;
return group$.pipe(
map(value => {
if (!(key in memo)) {
memo[key] = [];
}
memo[key].push(value);
return memo;
})
);
}, {}),
last()
)
.subscribe(data => console.log("data", JSON.stringify(data, null, 2)));