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

如何构建firebase数据库,以允许用户喜爱产品,从而在价格和时间方面最小化成本?

郭胤
2023-03-14

我正在尝试了解如何最好地构建我的数据库以适应喜欢产品的用户。我在以下两种方法之间存在冲突。对于上下文,我的产品在实时数据库中,我的用户模型和最喜欢的模型在Firest中。

1.当用户收藏一个项目时,使用productID和userID在FiRecovery中创建一个新的收藏对象。这意味着要获得收藏夹数量最多的产品,我必须按产品ID对收藏对象进行排序并计数最高。要返回用户收藏夹列表,我必须按用户ID对所有收藏夹列表进行排序。-我总是可以将最喜欢的项目粘贴在类似alogia(我用于全文搜索)之类的东西中以加快排序,但然后我更新两次并存储两次。

2.当用户喜欢某个项目时,我增加产品上的“收藏夹数量”变量,并将productID添加到用户的收藏夹列表中。这将使获得最受欢迎的产品变得更容易,但使喜欢和不喜欢产品变得更复杂。

Firebase推荐的方法是什么?首先是方法更像是一种关系数据库解决方案,而且似乎会很昂贵,我知道他们建议保持Firebase db平坦。Firebase的时间和成本更便宜的选择是什么?

共有1个答案

花高爽
2023-03-14

在Firestore中,您的第一种方法会有些昂贵,因为对于每个标记为收藏的产品,您将被收取一次文档写入费用,当您对它们进行排序时,您将被收取一次查询返回的每个“收藏”对象的读取操作费用。

第二种方法听起来好得多,因为您根据属性过滤产品。“喜欢”和“不喜欢”并没有你想象的那么复杂。如果你谈论的是一个列表,你可以简单地添加和删除元素,就像在官方文档中解释的那样。

 类似资料:
  • 我正在尝试建立一个只有我可以编写的Firebase数据库。所以没有用户有权编写任何东西。但每个人都可以阅读它。 然而,我无法为它制定规则。我使用电子邮件/密码登录创建了一个管理员用户,我知道它的UID。假设我的UID是: 我尝试了这两种方法,但它们不允许我写入数据库。 . 那么,如何只允许一个具有特定UID的用户向数据库写入任何内容呢?

  • 我正在尝试从Firebase实时数据库中检索数据(产品图像和价格)并将其放入回收器视图中,但我有一些困难。在我的数据库中,我存储了一个产品的图像url,我想在放置在cardView中的ImageView组件中显示该图像。我还设法正确检索了url和价格,但我的回收器视图没有显示它们。这是我的产品类: 我的适配器如下: 我在我的recyclerView中放置的活动: 产品名称是正确的,因为它是一个变量

  • 我当前的Android应用程序使用Firebase实时数据库。 我正在与安全规则作斗争,因为我希望只允许单个用户写入数据,同时允许任何经过身份验证的用户读取数据。 我制定了这些规则,但不确定它们是否足够安全。。。 其中“XXXXXXXXXXXXXXXXXXXX”是我希望允许写入数据的指定用户。 用户的uid是常量值吗? 在测试新规则时,单击“模拟”按钮时,“验证”选项管理什么?

  • 问题内容: 我有一个运动产品数据库。用户可以根据需要添加任意数量的产品,只要产品正确无误并得到管理员的批准即可。一切正常,但在上个月,我检查了该应用程序,它开始运行非常缓慢。我在真实设备以及仿真器上进行了检查。相同的行为。我认为问题在于产品数量在不断增长,而对产品进行计数变得更加困难。谁能帮我解决这个问题?谢谢! 码: 问题答案: 这取决于节点下有多少数据(产品)以及要在其上检索数据的设备上的带宽

  • 我遇到的问题是,使用下面显示的以下Firebase规则,经过身份验证的用户可以成功写入数据库,但无法从中读取,因为我在控制台中获得了“拒绝权限”。当我将读取和写入设置为true(公共)时,读取和写入功能都正常工作。我从数据库中读取的代码也显示如下: 规则: 示例数据库: 以下是确切的错误:

  • 首先,这里是我的消防规则: 以下是我的firebase数据库: FirebaseDatabase