firebase 云函数中的 pub/sub 如何工作?

How does pub/sub in firebase cloud function work?

我正在构建一个关于使用 firebase 进行工作计划管理的 Web 应用程序。 流程是:

-创建排班表模板:

template = {
    schedule : [
      {
        day : 'Monday',
        work_time : '10am-6pm'
      },
      {
        day : 'Tuesday',
        work_time : '8am-3pm'
      }
    ],
    from_date : '2021/01/25',
    to_date : '2021/05/25'
  }

-创建用户班次: 将模板添加到用户的班次或编辑模板

所以基本上,我需要通过用户的模板数据来订阅云调度程序,以便在日期范围内每天添加到用户的班次。

shift = {
   user_id : 'user_id',
   day : 'Monday',
   work_date : '2021/01/25',
   work_time : '10am-6pm',
  }
 // on the next day auto create
 shift = {
   user_id : 'user_id',
   day : 'Tuesday',
   work_date : '2021/01/26',
   work_time : '8am-3pm'
  }

-我需要在用户轮班编辑模板时取消订阅调度程序。

-在模板创建中,有一个按钮可以停止为拥有该模板的所有用户创建班次。

我说的有道理吗? 请帮助我的用例。可能吗?

在某些用例中,每个午夜(或根据用例的任何时间)将 template/initial 数据添加到数据库中是很常见的,以便可以在某处更新或列出。

I need to unsubscribe the scheduler when editing template on each user's shift.

I also need to unsubscribe all related user's scheduler when click stop creating button on template creation.

没有直接的方法可以做那样的事情。当用户开始编辑他们的班次时,您必须先将其存储在数据库中。在您的预定功能中,您可以检查(从数据库)是否正在编辑任务。如果是,则跳过它并继续其他。

此外,“所有相关用户的调度程序” 是什么意思?理想情况下,您将拥有一个单一的云功能来处理所有用户,而不是为每个用户提供一个专门的 pub/sub 主题。您只需按照与第一种情况相同的方式操作,如果用户单击了那个 停止按钮 然后将其存储在数据库中并且在您的函数运行时不处理该用户。