【问题标题】:Update Property on Firestore Document Based on a timestamp property in same document根据同一文档中的时间戳属性更新 Firestore 文档上的属性
【发布时间】:2021-03-24 02:32:13
【问题描述】:

我有一个具有以下两个属性的 Firestore 文档:

isActive: 真 lastDateForSubmission:时间戳。

我正在使用 isActive 属性在我的 React 应用程序中启用或禁用上传。目前 lastDateForSubmission 只是为了展示。

我没有任何后端服务器。我正在使用普通的 React 和 Firebase。

我需要在 LastDateForSubmission 属性中的时间之后自动将 isActive 属性设置为 False。

我一直在寻找不涉及后端服务器的解决方案,但我一直找不到。

感谢任何帮助。谢谢。

【问题讨论】:

  • 您需要一个后端来在您想要进行更改时触发一些代码。 Firestore 不会为您执行此操作。

标签: javascript reactjs firebase google-cloud-firestore


【解决方案1】:

Firestore 是一个数据库,因此它无法自行执行代码。但是,您可以使用 firestore 规则来确定是否允许写入,因此虽然这不会更改数据库 isActive 的值,但它仍可用于防止在您的 lastDateForSubmission 变量中指定的截止日期之后进行写入.

https://firebase.google.com/docs/firestore/security/rules-conditions

您可以在此处查看使用firebase规则访问请求时间并与目标文档进行比较的示例:https://fireship.io/snippets/firestore-rules-recipes/#time-based-rules-examples,具体可以比较request.timeresource.data.lastDateForSubmission字段。

如果您确实需要更改变量,那么您将必须创建一个服务器端函数来执行此操作(例如 firebase 函数),您可以按 cron 计划(例如每小时或取决于您将指定的时间间隔)

【讨论】:

  • 知道了。谢谢。但是要运行 firebase 功能,我需要设置一个节点服务器吗?
  • 它们在技术上是“无服务器”的,这意味着您不需要设置服务器,firebase 会为您处理。它会在需要时启动服务器以执行您的代码,然后在完成后再次关闭(请参阅firebase.google.com/docs/functions)。因此,您无需担心管理或扩展服务器,而且免费层有很大的限制。
【解决方案2】:

没有服务器,你不能做这样的事情。但幸运的是,您不需要维护服务器 Firebase 具有 Firebase 云功能。

您可以安排任务并更新您的数据库。 看https://firebase.google.com/docs/functions/schedule-functions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-09-27
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    相关资源
    最近更新 更多