Firesbase 云存储:每隔一段时间在数据库上运行函数

时间:2021-07-18 13:50:39

标签: google-cloud-firestore

我通过 firebase 拥有这个 firestore 数据库。该数据库包含客户可以“下载”的文档(即查看数据并将其在本地解析为模型类)。

我现在想做的是将某些文档标记为“精选”。如果过去 7 天的平均下载次数是前 14 天的平均下载次数的两倍以上,并且下载次数超过某个阈值,则该文档为特色。 我仍然可能会使用此功能。

但是为了做这个标记,我需要运行一个函数来每天读取每个文档的下载计数(我把这个下载计数放在文档的数据中),存储这些值并将其与存储早期的值。

我现在想知道的是,firebase 是否具有这样的功能,可以让我托管这样的功能,还是我真的需要设置自己的外部服务器(当然不是我的桌面)只是为了这样做?

2 个答案:

答案 0 :(得分:1)

您可以使用 Firebase Scheduled 函数。您可以在 here 中找到有关它们的更多信息。

答案 1 :(得分:1)

您可以安排一个 cron 作业每隔几个小时运行一次,也可以设置一个文档 侦听器来监听对文档或集合。

这完全取决于您想要的结果。

db.collection("cities").doc("SF")
    .onSnapshot((doc) => {
        var source = doc.metadata.hasPendingWrites ? "Local" : "Server";
        console.log(source, " data: ", doc.data());
    });

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});