当前位置: 首页 > 知识库问答 >
问题:

使用Firebase实时数据库和Firebase函数创建过期功能?

廖鸿达
2023-03-14

简短的一般性问题:是否有一个侦听器(无论是firebase realtime、函数还是一般的侦听器)可以设置存储在firebase realtime对象中的日期,并在该日期到期时删除该对象?

长的具体问题:我正在与firebase实时数据库和firebase功能建立一个市场应用程序,用户可以对产品进行投标,但这些投标将在应用程序中存储的日期到期。用户也可以通过最高或最低的出价搜索/过滤产品,我正在使用algolia进行全文搜索和类型过滤。为了最小化成本,我这样构建我的数据库:

出价 {到期日期、 产品 ID, ...等}产品 {最高出价, 最高出价, 最低出价, 最低出价, ...等}(藻类模型对所有可搜索/可过滤变量具有相似的结构)

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

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

我强烈反对每次拉动产品时都更新最高/最低出价,因为这会导致很多额外的调用,增加费用并减慢一切速度。我还必须从算法模型中删除最高/最低出价,并且仅在从算法中再次返回列表时才进行过滤,从而大大增加了调用次数。

这种听众存在吗?有更好的方法吗?

共有1个答案

蔚和安
2023-03-14

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

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

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

 类似资料:
  • 所以我正在制作约会应用程序,现在我需要为用户创建一个匹配的人员列表。 因此,我需要一个firebase查询来查看性别,并检查是否已经匹配,如果匹配,则不应将其包括在列表中。 我试着按性别过滤数据。如何编辑此查询以检查它们是否已匹配?匹配项显示在用户/{userID}/Matches/{matchedUserID}中 这是我尝试的:

  • 我在一个Android应用程序中使用Firebase数据库,每次用户启动时,我都会在数据库中存储一些值,为此我会执行以下操作: 正如您在子方法中看到的,如果称为“usrId”,它将创建usrId目录,并在其中添加所有neccesary信息。但是我想为每个用户创建目录,所以我尝试传递usrId变量作为参数。但它不起作用。当我调试代码时,调试器说本地var usrId无法识别,我的问题是如何在Fire

  • 我无法在/users/{uname}/token上获取令牌- 错误:提供给sendToDevice()的注册令牌必须是非空字符串或非空数组。在FirebaseMessagingeror。FirebaseError[作为构造函数](/srv/node_modules/firebase admin/lib/utils/error.js:42:28)位于FirebaseMessagingError。在新

  • 我正在创建一个应用程序,它使用两步对象创建到firebase实时数据库。 我想要的是,在一个捕获onCreate事件的云函数上,如果一些规则不完整,那么create操作就会被停止。 有办法做到这一点吗?或者我需要移除节点而不是拒绝创建? 谢谢你!

  • 实时数据库触发器在写入创建时是排队还是线程化?