【发布时间】:2018-07-25 18:07:57
【问题描述】:
更新:
很奇怪。我必须使用.valueChanges().pipe(first())。然后它工作正常。这种行为有什么线索吗?是firestore 问题还是angularfire2?如果我将使用该模式,那么我将错过这里的实时数据库功能。那我该怎么办呢?
旧
看来我在这里做错了。你能告诉我问题出在哪里吗?它没有给出任何错误。但它也不起作用。
注意: this.budgetGroups$ 没有任何值。但是this.defaultBudgetGroups$ 有价值。有什么线索吗?
select-budget-group.ts
import { Observable } from 'rxjs/Observable';
import { forkJoin } from 'rxjs/observable/forkJoin';
import { concat } from 'lodash';
budgetGroups$: Observable<BudgetGroup[]>; defaultBudgetGroups$: Observable<BudgetGroup[]>
constructor(){}
ionViewDidEnter() {
this.getAllBudgetGroups();
}
getAllBudgetGroups() {
this.budgetGroups$ = this.budgetGroupProvider.getAllTempBudgetGroups().valueChanges();
this.defaultBudgetGroups$ = this.budgetGroupProvider.getDefaultBudgetGroups().valueChanges();
forkJoin([this.budgetGroups$, this.defaultBudgetGroups$]).subscribe(res => {
this.budgetGroupSortedList = concat(res[0], res[1]);
}, err => {
console.log(err);
});
}
provider.ts
getDefaultBudgetGroups(): AngularFirestoreCollection<BudgetGroup> {
return this.fireStore.collection(`defaultBudgetGroups`);
}
getAllTempBudgetGroups(): AngularFirestoreCollection<BudgetGroup> {
return this.fireStore.collection(`members/${this.authenticationProvider.member.id}/budgetGroups`);
}
【问题讨论】:
-
可能很傻,但是 getAllBudgetGroups() 是否在您的 OnInit() 挂钩中被调用?你是说当 ForkJoin 发出时,budgetGroup 没有值吗? ForkJoin 不起作用怎么办?
-
其实
this.budgetGroups$没有价值。但是this.defaultBudgetGroups$在我的用例中很有价值。What about ForkJoin isn't working?它应该返回this.defaultBudgetGroups$的所有值。但它不返回任何东西。有什么线索吗?也请查看我帖子上的更新。 @joshrathke -
我还是有点不清楚。
this.budgetGroup$甚至发出一个空数组吗? ForkJoin 在所有 Observable 发出至少一个值之前不会返回任何内容。 -
哦..那么我应该在这里使用哪个运算符?这个
this.budgetGroup$可以是null或undefine或其他任何时候。那么哪个运营商适合这里呢? @joshrathke -
该数据是否相互依赖?如果不是,您可以将它们分成不同的订阅。有没有办法让你的
this.budgetGroup$至少发出一个空数组或其他东西?我对 Firebase 不熟悉???所以我不知道,但您似乎希望您的 API 至少返回一些东西,即使它没有找到任何数据。这将是理想的解决方案,尤其是在 RxJs 环境中。
标签: angular rxjs ionic3 google-cloud-firestore angularfire2