如何使用Cloud Functions写入Firestore集合中的所有文档?

时间:2019-07-06 09:48:52

标签: google-cloud-firestore google-cloud-functions

我们正在开发一个使用Firebase Firestore的应用程序。每天的午夜,我们希望将集合中每个counter文档的1属性的值设置为User

为此,云功能似乎是一个合理的选择,我们很快找到了安排云功能的方法:

exports.incrementCounterNightly = functions.pubsub.schedule('0 0 * * *')
  .timeZone('Europe/London')
  .onRun((context) => {
  console.log('This will be run every day at 00:00 AM London Time!');
});

我们要写入的文档的路径是collections / users/*。

我们的问题是:

  • 在Cloud Functions中实现此目标的最佳方法是什么?
  • 这是Cloud Functions可以适当实现的吗?
  • 这是可扩展的吗?如果用户收集的文档增加到100,000,甚至5,000,000,该怎么办?

在此先感谢

Ed

1 个答案:

答案 0 :(得分:1)

由于成本和编程方面的限制,我认为您应该考虑以其他方式构造数据。

对于用例,您不仅可以存储每个用户使用的“超级赞”的原始计数,还可以将每天的超级赞存储在带有日期的单独文档中。

因此,如果要查询用户今天使用了多少个超级喜欢,可以查询用户的“超级喜欢”子集合。那里有一个文档,其中有上次超级赞的日期以及使用了多少张。

因此,当查询他们今天使用了多少...获取文档时,如果文档的日期不同,则返回0(因为不是今天的日期),如果文档具有今天的日期,则查看计数。

然后,当用户使用超级图标时,您可以返回该文档。可以将计数设置为1,将日期设置为今天的日期。或者只是增加日期的计数已经是今天。

如果您对我要解释的内容有任何疑问,请告诉我。