【发布时间】:2020-04-25 14:33:51
【问题描述】:
我在 Firebase 实时数据库中有一个节点,它保存布尔值 true 或 false 以及更多属性。当且仅当此键为假时,我才允许用户在数据库中的同一节点上执行写操作。
当用户完成任务后,此值再次设置回 false。这类似于操作系统的临界区概念,即一次只有一个用户可以执行一项任务。
它按我的预期工作,但我面临的问题是用户是否已将此值更改为 true,但由于网络不好或他/她没有在数据库上写入。现在,没有人可以在数据库上的那个节点上写。
我想添加一个时间间隔功能,如果用户在某个时间间隔内没有执行任何写操作,比如 10 分钟并且布尔值为真。然后,我想将其设置为 false。
我知道 Firebase Cloud Function 仅在数据库写入、更新和创建操作时触发。请建议我处理此问题的方法或其他一些我可以执行的方法。任何地方都没有关于此功能的代码 sn-p。我在互联网上查找了各种资源,进行了头脑风暴,我一无所获。
【问题讨论】:
-
也许你应该看看 cron 作业或schedule functions。顺便说一句,我不太熟悉它,但它可能对你有帮助。
-
这非常接近 Doug 在此处描述的生存时间场景:medium.com/firebase-developers/…。也可以在这里查看我的答案:stackoverflow.com/questions/47173560/…
-
我也查看了调度函数,但在我看来,它不会像我们预期的那样一直有效,因为布尔值可能不会在我们想要的时候被删除。考虑这个例子:让我们假设在某个时间 T,该节点是用户在片刻前写入的,而云函数看到它是在片刻之前写入的(当前 TImestamp - 节点的更新时间时间戳记)。现在很明显,预定的功能将在以后运行(比如 10 分钟)。现在,在时间 T+1 分钟,用户已经停止工作。在时间 T+10,节点的布尔值不会设置..
-
.. 自 9
标签: android firebase firebase-realtime-database timestamp google-cloud-functions