我可以使用函数触发器来安排函数吗? [复制]

Posted

技术标签:

【中文标题】我可以使用函数触发器来安排函数吗? [复制]【英文标题】:Can I shedule a function with a function trigger? [duplicate] 【发布时间】:2020-08-14 19:44:48 【问题描述】:

在对集合中的一个文档进行一些更改后,我需要执行一个 cronjob 函数

例如,当我的用户商店打开时,我需要启动一个 cronjob 来在用户指定的时间关闭该商店,我的想法是这样的

exports.updateUser = functions.firestore
    .document('stores/storeId')
    .onUpdate((change, context) => 

     //Logic to get the store close time here, lets say I get close in 4 hours
     //Now here I plan to run a cronjob like this

     exports.scheduledFunctionCrontab = functions.pubsub.schedule('* 4 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => 

   //Close my store in 4 hours

);


    );

我可以这样做吗?有没有办法做这样的事情?

谢谢!

【问题讨论】:

【参考方案1】:

您无法从另一个云功能更改计划的云功能的配置。

在您的情况下,一种解决方案是:

    在商店文档的特定字段中写入关闭时间; 调度 (a) 运行的云函数,例如每分钟,(b) 检查是否有任何关闭时间低于当前运行时间的已打开存储文档,以及 (c) 是否有任何此类存储文档将其状态修改为已关闭。

【讨论】:

非常感谢 Renaud,您的时间和答案,但有一个问题,如果我每分钟都这样做,我将需要每分钟阅读所有文件以查看是否有关闭时间,如果没有我浪费了阅读时间,有没有更好的方法在商店关门时间到来时启动 cron? 我想如果我有 100.000 家商店,我每分钟将阅读 100.000 份文件,可能会获得 2 或 3 家关闭时间的商店 不客气。您可以根据(首先)关闭时间字段和(其次)应该不同于关闭的状态编写查询。 哦!非常感谢 !你是对的,所以查询只会读取具有这些结果的文档而不是所有文档吗? 没错!如果您尝试编写查询并遇到问题,请随时寻求帮助!您应该为 closingTime 字段分配一个时间戳值。您会在 SO 上找到几个答案,这些答案显示了如何编写这样的查询,但请再次毫不犹豫地寻求帮助。

以上是关于我可以使用函数触发器来安排函数吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

我可以确定哪个 AWS 服务触发了我的 Lambda 函数吗?

Azure 函数 Blob 触发器将文件复制到文件共享

在 Javascript 中触发函数时是不是必须提供所有参数? [复制]

我们可以创建一个关于过程、函数、触发器、包的视图吗?

我可以从Typescript中的父类的构造函数触发子类的成员函数吗?

Azure - 复制多个 blob 的触发器