Firestore——仅获取大型同步集合中已更改的文档

jma*_*svt 2 javascript firebase google-cloud-firestore

我已阅读下面的所有问题,但在文档中找不到任何内容来描述如何同步集合并仅从集合中接收已更改的文档。我的同步集合中有超过 500 个文档(使用redux-saga-firebasesyncCollection),但通常只有大约 100 个发生更改。在任何给定时间,更改的次数会更少,但目前,即使只有一个更改,我也会收回所有 500 多个文档,这会导致 500 多个读取。不理想,而且会让我付出巨大的代价。

这是我使用 redux-saga-firebase 的代码,但普通的 firebase 代码答案也足够了。如何获得发送集合中已更改文档的同步响应?

export function* getPlayersFromDb() {
  yield fork(
    rsf.firestore.syncCollection,
    'players',
    { successActionCreator: response => ({
            type: t.GET_PLAYERS_FROM_DB_SUCCESS,
            payload: [...response],
        }),
        failureActionCreator: () => ({
            type: t.GET_PLAYERS_FROM_DB_FAILURE,
            payload: [],
        }),
        transform: response => messageTransformer(response),
    }
);
Run Code Online (Sandbox Code Playgroud)

}

Firestore 只同步差异吗?

Realm 与 Firestore 上的大型集合同步 - 架构问题/问题

如何使用缓存避免不必要的 Firestore 读取

Firestore 同步到底有什么作用?

Dou*_*son 6

Firestore 查询没有“仅查询已更改的内容”的概念。您需要自己创建这个概念。通常的方法是在每个文档中记录时间戳以及上次更新的时间,然后在范围过滤器中使用该字段来仅获取自收到最新更新以来更新的文档。您将需要跟踪客户端中的最新更新时间戳。一种可能性是使用迄今为止在任何文档中看到的最大时间戳。