Mergemap Angular + firestore 集合
Posted
技术标签:
【中文标题】Mergemap Angular + firestore 集合【英文标题】:Mergemap Angular + firestore collection 【发布时间】:2019-08-07 09:21:09 【问题描述】:我开始使用 angular,我需要帮助来解决这个问题。我正在使用 Firestore 数据库。
getDiveSitesFrequentation(userId: string): void
this.getDives(userId)
.pipe(map(dives => mergeMap(
(dive: Dive) => this.diveSiteService.getDiveSite(dive.dive_site)
.pipe(map(diveSite => return dive.number + ' ' + diveSite.name ))
))).subscribe(v => console.log(v))
我需要控制台日志返回一个包含潜水编号和潜水地点名称的字符串数组。
但此代码仅返回 mergemap 函数。
有人可以帮我解决这个问题吗?
提前致谢。
【问题讨论】:
this.diveSiteService.getDiveSite
是做什么的?它返回一个 Observable?
【参考方案1】:
你走在正确的道路上,我相信这会给你想要的:
import combineLatest from 'rxjs';
...
this.getDives(userId)
.pipe(
mergeMap(dives =>
const diveSiteStringObservables = dives.map(
(dive: Dive) =>
return this.diveSiteService.getDiveSite(dive.dive_site)
.pipe(
map(diveSite =>
return dive.number + ' ' + diveSite.name;
)
);
);
return combineLatest(diveSiteStringObservables);
)
).subscribe(v => console.log(v));
关键是使用 combineLatest() 将一个 Observables 数组组合成一个 Observable,返回一个 Array。
【讨论】:
你好@SnorreDan,谢谢你的回答。我试过你的代码,我收到以下错误:TypeError: "You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable."
看起来我忘记在代码的第 10 行添加“return”,我现在已将行更新为“return this.diveSiteService.getDiveSite(dive.dive_site)”。希望它现在应该可以工作了。以上是关于Mergemap Angular + firestore 集合的主要内容,如果未能解决你的问题,请参考以下文章