firebase - Firebase 云功能中的发布/订阅如何工作?
问题描述
我正在构建一个关于使用 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'
}
- 在用户轮班编辑模板时,我需要取消订阅调度程序。
- 在模板创建中,有一个按钮可以停止对拥有该模板的所有用户创建班次。
我有任何意义吗?请帮助我的用例。可能吗?
解决方案
在某些用例中,每天午夜(或根据用例随时)将模板/初始数据添加到数据库中是很常见的,以便可以在某处更新或列出。
在每个用户的班次编辑模板时,我需要取消订阅调度程序。
在创建模板时单击停止创建按钮时,我还需要取消订阅所有相关用户的调度程序。
没有直接的方法可以做这样的事情。当用户开始编辑他们的班次时,您必须首先将其存储在数据库中。在您的计划功能中,您可以检查(从数据库)是否正在编辑任务。如果是,则跳过它并继续其他人。
另外, “所有相关用户的调度程序”是什么意思?理想情况下,您将拥有一个处理所有用户的云功能,而不是为每个用户提供一个专用的发布/订阅主题。您只需按照与第一种情况相同的方式,如果用户单击了该停止按钮,则将其存储在数据库中,并且在您的函数运行时不处理该用户。
推荐阅读
- javascript - 在 javascript/react/css 中的点之间绘制路径
- c# - 通过单击 + 按钮添加多个文本框和两个 Dropbox
- javascript - 如何使基本的 Tone.js 合成器听起来一致?
- r - 具有时间列的数据集正在通过 R 作为十进制数读取
- ios - SwiftUI @FocusState - 如何赋予它初始值
- django - Django不在表单字段中显示默认值
- python - Python 无法从数据库中找到 SQL 值
- stm32 - 每约 1.5 秒读取一次 ADC 中断
- go - 从 GCP 源代码库中获取
- sdk - 在 oEmbed 上使用 Deezer JavaScript SDK 返回 CORB 问题