我正在使用Ionic 3,Firebase和FirebaseAuth。我尝试使用当前经过身份验证的用户来检索此用户的对象列表。以下是我的尝试,我收到了错误
getContacts错误:TypeError:您提供了' undefined'预期流的地方。您可以提供Observable,Promise,Array或Iterable。
我在这里遗漏了一些内容,因为它似乎应该用每个新数据更新self.assertTrue(any(animal in method("cat dog tiger") for animal in ("cat", "dog")))
。
我的尝试:
onNext
非常感谢任何帮助。
解决方案根据forkJoin建议:
getContacts() {
this.contactList.length = 0;
this.data.getAuthenticatedUserContactList().subscribe(
(contact => {
this.contactList.push(contact);
}),
(error => console.error(`getContacts Error: ${error}`))
);
}
getAuthenticatedUserContactList() {
return this.afAuth.getAuthUser()
.flatMap(user => this.database.list(`contact-lists/${user.uid}`).take(1))
.flatMap((contactList) => {
if (contactList && contactList.length > 0) {
contactList.forEach(element => {
console.log(`ForEach: ${element.userId}`); // THIS LOGS THE IDS AS EXPECTED
return this.database.object(`/profiles/${uid}`, { preserveSnapshot: true }).take(1);
});
} else {
return Observable.throw(new Error("No bros here"));
}
});
}
答案 0 :(得分:1)
在第二个$scope
运算符中,如果满足此条件,则不返回任何内容:
flatMap()
contactList && contactList.length > 0
语句位于return
回调中。
我不知道你的应用程序的逻辑是什么,但回调forEach
始终需要返回一个Observable(或此处列出的内容:http://reactivex.io/rxjs/class/es6/MiscJSDoc.js~ObservableInputDoc.html)