如何解决使用Firebase实时数据库和Firebase函数创建到期功能?
简短的一般性问题: 我可以设置存储在Firebase实时对象中的日期上的侦听器(具有Firebase实时,函数或一般功能),该侦听器在日期过期时删除该对象吗?
长特定问题: 我正在使用firebase实时数据库和firebase函数来构建一个市场应用程序,用户可以在该应用程序上对产品进行出价,但是这些出价将在该应用程序中存储的日期到期。用户还可以按最高或最低出价搜索/过滤产品,我正在使用algolia进行全文搜索和类型过滤。为了最小化成本,我将数据库结构如下:
出价{expirationDate,productID等。} 产品{highestBidID,highestBidCost,lowestBidID,lowestBidCost等...} (所有可搜索/可过滤变量的算法模型具有相似的结构)
我遇到的问题是如何删除过期的投标,然后在投标包含存储的值的情况下更新产品模型和aloglia模型。
我能想到的唯一方法(给定我已建立的数据库)是对出价项目使用某种侦听器,如果出价过期且出价是最高或最低出价,则调用另一个更新的函数产品模型和algolia模型分别处理下一个最高/最低出价。
我强烈反对每次拉出产品时都只更新最高/最低出价,因为这将导致大量额外的通话,增加费用并减慢一切。我还必须从algolia模型中删除最高/最低出价,并仅在一次从algolia返回列表后再次进行过滤,以大幅增加通话次数。
这种侦听器是否存在?有更好的方法吗?
解决方法
是否可以设置存储在Firebase实时对象中的日期上的侦听器(具有Firebase实时,函数或一般功能),该侦听器会在日期到期时删除该对象?
不,没有简单的方法可以做到这一点。
您将必须编写代码来安排使用某些其他机制或产品删除节点。我写了一个博客,描述了如何使用Cloud Tasks作为schedule the deletion的机制来过期(TTL)Firestore文档。这同样适用于实时数据库中的节点。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。