【问题标题】:Get collection reference in redux-saga-firebase在 redux-saga-firebase 中获取集合参考
【发布时间】:2020-06-14 16:16:19
【问题描述】:

我无法使用redux-saga-firebase 定义集合引用。我试图这样定义它:

const query = rsf.firestore.collection('players').where('up', '>', lastUpdated);

但我得到了

TypeError: _firebase_firebase__WEBPACK_IMPORTED_MODULE_6__.rsf.firestore.collection 不是函数

我也尝试过使用.reference(),如here 所述,但无济于事。我正在尝试限制每个this suggestion 从集合中同步的文档数量。如何获取用于此函数的集合引用?

import { rsf } from '../../firebase/firebase';

export function* getPlayersFromDb() {
  const players = yield select(getPlayers);
  const lastUpdated = Math.max(...players.map(x => x.up));
  const query = rsf.firestore.collection('players').where('up', '>', lastUpdated);

yield fork(
  rsf.firestore.syncCollection,
  query,
  { successActionCreator: response => ({
            type: t.GET_PLAYERS_FROM_DB_SUCCESS,
            payload: [...response],
        }),
        failureActionCreator: () => ({
            type: t.GET_PLAYERS_FROM_DB_FAILURE,
            payload: [],
        }),
        transform: response => messageTransformer(response),
    }
);

}

【问题讨论】:

    标签: javascript firebase google-cloud-firestore redux-saga-firebase


    【解决方案1】:

    您的代码的问题在于您将官方的 firestore SDK 库与 redux-saga-firestore 的库混合在一起。如果你想获得collectionReference,你必须使用官方 SDK,因为 redux-saga-firestore 库不提供返回该输出的方法。

    因此,为了获得 collectionReference,您需要导入 Firestore SDK 并使用几乎与 getPlayersFromDb 函数上相同的代码,它看起来像这样:

    const firebase = require("firebase");
    require("firebase/firestore");
    var db = firebase.firestore();
    
    ...
    
    export function* getPlayersFromDb() {
       ...
       const query = db.collection('players').where('up', '>', lastUpdated);
       ...
    }
    

    注意:正如您在 redux-saga-firestore documentation 上看到的那样,您可以为此使用 getCollection 方法,但由于您有 where 子句,因此您需要使用collectionReference 无论如何都要过滤它,所以我担心 redux-saga-firestore 没有真正的解决方案。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-20
      • 1970-01-01
      • 2021-07-31
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-01
      相关资源
      最近更新 更多