Return snapshotChanges() 后的值。在 firebase 列表中订阅
Return value after snapshotChanges().subscribe in firebase list
我创建了以下函数以从 firebase table 获取数据,包括记录的键:
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);
});
});
}
调用函数时如何return userList 数组?
不要 subscribe
而是 map
到你想要的值 return,这将 return 来自 [=14= 的 Observable
] 然后您可以通过 this.fetchUsers.subscribe((...) => ...)
:
订阅
fetchUsers() {
return this.firebase.list('users').snapshotChanges()
.pipe(map((res) => {
this.userList = [];
res.forEach(element => {
var user = element.payload.toJSON();
user["$key"] = element.key;
this.userList.push(user as User);
return this.userList;
});
}));
}
您可以 return 一个数组的可观察对象,然后订阅它。
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
我创建了以下函数以从 firebase table 获取数据,包括记录的键:
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);
});
});
}
调用函数时如何return userList 数组?
不要 subscribe
而是 map
到你想要的值 return,这将 return 来自 [=14= 的 Observable
] 然后您可以通过 this.fetchUsers.subscribe((...) => ...)
:
fetchUsers() {
return this.firebase.list('users').snapshotChanges()
.pipe(map((res) => {
this.userList = [];
res.forEach(element => {
var user = element.payload.toJSON();
user["$key"] = element.key;
this.userList.push(user as User);
return this.userList;
});
}));
}
您可以 return 一个数组的可观察对象,然后订阅它。
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