如何观看Firestore集合并通过ngrx效果返回其结果?

时间:2019-01-13 21:04:12

标签: angular rxjs google-cloud-firestore ngrx

我有一个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);
        }

0 个答案:

没有答案