【问题标题】:Creating expiration functionality with firebase realtime database and firebase functions?使用 firebase 实时数据库和 firebase 功能创建过期功能?
【发布时间】:2020-11-30 19:21:15
【问题描述】:

简短的一般性问题: 是否有一个监听器(使用 firebase 实时、函数或一般)我可以在存储在 firebase 实时对象中的日期上设置,当日期到期时删除该对象?

具体问题: 我正在使用 firebase 实时数据库和 firebase 功能来构建一个市场应用程序,用户可以在其中对产品出价,但这些出价将在应用程序中存储的日期到期。用户还可以按最高或最低出价搜索/过滤产品,我正在使用 algolia 进行全文搜索和类型过滤。为了最大限度地降低成本,我这样构建我的数据库:

出价 {expirationDate, productID, ... etc.} 产品 {highestBidID、highestBidCost、lowestBidID、lowestBidCost、...等} (algolia 模型对于所有可搜索/可过滤的变量都具有相似的结构)

我遇到的问题是如何删除过期的投标,然后如果投标包含存储值,则更新产品模型和 aloglia 模型。

我能想到的唯一方法(给定我设置的数据库)是在投标项目上使用某种监听器,如果投标过期并且投标是最高或最低投标,则调用另一个更新的函数分别以次高/最低出价处理的产品模型和 algolia 模型。

我强烈反对每次拉产品时只更新最高/最低出价,因为这会导致大量额外电话、增加费用并减慢一切。我还必须从 algolia 模型中删除最高/最低出价,并且仅在从 algolia 返回列表后才进行过滤,这会大大增加调用次数。

这种监听器存在吗?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript firebase firebase-realtime-database google-cloud-firestore content-expiration


    【解决方案1】:

    是否有一个监听器(使用 firebase 实时、函数或一般)我可以设置存储在 firebase 实时对象中的日期,当日期到期时删除该对象?

    不,没有简单的方法可以做到这一点。

    您必须编写代码来安排使用其他机制或产品删除节点。我写了一篇博客,描述了如何使用 Cloud Tasks 作为schedule the deletion 的机制来使 Firestore 文档过期 (TTL)。这同样适用于实时数据库中的节点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-21
      • 2022-01-19
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多