所有
我一直在寻找问题的解决方案大约一个星期而且找不到任何答案,所以希望有人可以指出我做错了什么。我有一个FirebaseList observable,我使用Firebase,它使用.where()在第一个实例中过滤为搜索功能。
一旦完成,我试图使用If语句来确定结果是否仍然有效(因为Firebase无法执行所有搜索功能),然后如果结果仍然有效,则插入另一个包含用户信息的对象(另一个Observable) )。
我尝试过使用subscribe / map / flatMap和switchMap的组合但不能只返回Observable流。结果要么作为多个数组返回,要么在流中返回'undefined',要么返回其他不需要的数组。
我不确定如何使用Plunker,所以复制了下面的代码。我还需要使用键返回对象,因此需要额外的有效负载步骤。
return ths.afs.collection('results', ref=> ref.where('location', '==',
searchLocation.where('date', '==', searchDate)
.snapshotChanges().map(actions => {
return actions.map(a => {
const data = a.payload.doc.dat();
const key = a.payload.doc.key;
return{ key, ...data};
}).map(trueResults => {
if (!trueResults.removedid.includeds(firebaseUser.uid || trueResults.status === 'available'){
this.userService.getUserObj(trueResults.ownerId).subscribe(userObj => {
trueResults.userOwnerObj = userObj;
});
}
return trueResults
}
在我的组件中,我订阅了搜索页面上显示的结果。
我也尝试将trueResult推送到数组上,但担心会破坏此函数的Observable性质。
任何建议都赞赏!
答案 0 :(得分:0)
我回到了之前的设置并出于某种原因工作了。它涉及在有效载荷之后映射结果并推入阵列。例如
>>> get_next('dog')
'lion'
希望这可以帮助处于相同情况的任何人。请注意上面订阅了这里的其他变量,但如果有更好的选择,我会在以后重新访问,我还在学习