【发布时间】:2018-11-20 23:23:39
【问题描述】:
我不知道如何更改 Firebase 数据库的值,然后在一定时间(30 分钟)后将其更改回来,在服务器端执行所有操作,而不是在实际设备日期之前。
我假设我需要 Firebase 功能。
如果我做不到,有没有其他方法可以让 Firebase 作为主数据库?
我真的不需要任何代码,只需要它背后的逻辑。
【问题讨论】:
标签: firebase mobile firebase-realtime-database
我不知道如何更改 Firebase 数据库的值,然后在一定时间(30 分钟)后将其更改回来,在服务器端执行所有操作,而不是在实际设备日期之前。
我假设我需要 Firebase 功能。
如果我做不到,有没有其他方法可以让 Firebase 作为主数据库?
我真的不需要任何代码,只需要它背后的逻辑。
【问题讨论】:
标签: firebase mobile firebase-realtime-database
我会质疑您的数据模型。您可能需要考虑使用时间戳,而不是使用布尔值。
例如,如果您的数据模型目前类似于:
Permissions
- user_id
- is_allowed (boolean)
您可能想改用这个:
Permissions
- user_id
- allow_until (timestamp)
然后,您的应用程序代码可以检查当前时间是否早于 allow_until 时间戳。
【讨论】:
Firebase 实时数据库中没有逻辑可以在一定时间后自动更改值。您通常会在 Cloud Functions 或客户端设备的应用中运行此类代码。
在这两种情况下,您都可以继续使用 Firebase 实时数据库,因为您只是与之交互。在 Cloud Functions 中,您将通过 Admin SDK 执行此操作。
只需几步:
创建一个云函数来查询数据库以查找过期项目,并更改它们的值。此代码使用 Node.js 的 Admin SDK,但与您在 Web 客户端中运行的代码非常相似。
将该云函数绑定到每分钟左右运行一次的 cron 作业(取决于您希望超时的准确程度)。有关一些选项,请参阅Cloud Functions for Firebase trigger on time?
我建议你也看看这些类似的问题:
【讨论】: