我有一个Firestore集合,该集合从用户输入中接收新条目。我想听听这个收藏,并实时更新数据。
我可以在服务中获取数据,但是当返回该服务时,该数据不可用。
我有一个获取公共数据的ngrx效果。在这里res
不是我从服务调用中期望的数据数组。
@Effect()
getPublicData$ = this.actions$.pipe(
ofType<ActionGetPublicData>(ActionTypes.GET_PUBLIC_DATA),
map(() => this.afs.getPublicData()),
map(res => {
console.log('res:::', res);
return new ActionGetPublicDataSuccess({ publicData: res });
}),
catchError(error => of(new ActionGetPublicDataFailure({ error: error })))
);
我的服务电话:
getPublicData() {
const publicDataRef = firebase.firestore().collection('publicData').where('count', '>', 0);
return publicDataRef.onSnapshot(function(querySnapshot) {
const historyData = [];
querySnapshot.forEach(function(doc) {
historyData.push(doc.data());
});
// The historyData prints an array of document data, as needed.
console.log('historyData::::', historyData);
return historyData;
});
}
我希望数据数组以res
的形式返回到效果,因此我可以分派成功操作并将数据添加到我的状态。但是res
记录如下:
res::: ƒ () {
asyncObserver.mute();
firestoreClient.unlisten(internalListener);
}