Firestore计数文件数

问题描述

如果我的Firestore文档具有以下结构:

enter image description here

在我的网络应用中,我想显示关注者的数量。如果我只是对整个get()子集合进行followers的操作。就读取操作而言,这将是昂贵的。我考虑了以下解决方案:

具有反文件,并且具有每次使用云功能followers集合内创建文件时都会增加的反字段。但是该计数器每个文档每秒只能写一次。拥有followers集合和每个关注者的每个文档的想法是避免每秒写入一次的限制(感谢Doug Stevenson的博客The top 10 things to know about Firestore when choosing a database for your app)。

我能想到的唯一解决方法是使用分布式计数器扩展。但是到目前为止,从我的阅读来看,该计数器仅适用于前端SDK。我是否可以在云函数或node.js后端中使用该扩展来增加关注者计数器?

解决方法

但据我所读,到目前为止,该计数器仅适用于前端SDK。

那不是事实。该扩展程序适用于对Firestore进行的任何查询。

我是否可以在云功能或node.js后端中使用该扩展来增加关注者计数器?

该扩展名通过监视添加到集合中或从集合中删除的文档来工作。更改的来源无关紧要。您仍然可以从任何能够查询柜台文件的代码中使用计算出的柜台。

,

“每秒每文档一次写入”是一个准则,而不是硬性规定,因此,我强烈建议您不要立即挂断它。

再说一次,如果您认为您一贯需要的数量超出了保存在单个文档中的数量,则可以选择:

  1. 保留分布式计数器,如distributed counters上的文档所示。

  2. 将计数器放在其他位置。例如,我通常将计数器保存在实时数据库中,该数据库具有更高的写入吞吐量(但每个分片的读取并发性较低)。