所有
我一直在寻找问题的解决方案大约一个星期,找不到任何答案,所以希望有人在这里可以指出我做错了什么 . 我有一个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性质 .
任何建议表示赞赏!
1 回答
我回到了早期的设置,并出于某种原因工作 . 它涉及在有效载荷之后映射结果并推入阵列 . 例如
希望这可以帮助处于相同情况的任何人 . 请注意上面订阅了这里的其他变量,但如果有更好的替代方案,我会在以后重新访问,我还在学习