我创建了以下函数,以便从firebase表中获取数据,包括记录的键:
fetchUsers() {
this.firebase.list('users').snapshotChanges()
.subscribe(res => {
this.userList = [];
res.forEach(element => {
var user = element.payload.toJSON();
user["$key"] = element.key;
this.userList.push(user as User);
});
});
}
调用函数时如何返回userList数组?
答案 0 :(得分:1)
您可以返回数组的一个可观察对象,然后订阅它。
fetchUsers(): Observable<User[]> {
return this.firebase.list('users').snapshotChanges()
.pipe(
map(res => {
return res.map(element => {
let user = element.payload.toJSON();
user["$key"] = element.key;
return user as User;
});
}));
}
然后您可以从任何调用该方法的地方订阅该方法。
this.usersSubscription = this.dataService.fetchUsers.subscribe(users=> {
this.users = users;
});
请记住不要在onDestroy上取消注册。
ngOnDestroy() {
this.usersSubscription.unsubscribe();
}
查看此有效的stackblitz
答案 1 :(得分:0)
不要subscribe
而是将map
设为您要返回的值,这将从Observable
返回一个fetchUsers
,然后您可以通过{{ 1}}:
this.fetchUsers.subscribe((...) => ...)