【问题标题】:What is the correct way to add '.indexOn' rule in firebase realtime database?在 firebase 实时数据库中添加“.indexOn”规则的正确方法是什么?
【发布时间】:2020-03-25 11:47:30
【问题描述】:

我已经阅读了.indexOn 规则对性能和定价的重要性(减少下载的总字节数),我想知道实现它的正确方法是什么。

在我的例子中,我在这条路径 Cosmetics/Outfits 有一个 firebase 实时数据库,所以我应该像这样声明规则:

"Cosmetics": {
"Outfits": {
  ".indexOn": ["rarity"]
}}

或者像这样:

"Outfits": {
  ".indexOn": ["rarity"]
}

在这两种情况下,我都没有收到任何错误。

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    假设您的数据库架构如下所示:

    Firebase-root
       |
       --- Cosmetics
             |
             --- Outfits
                   |
                   --- outfitIdOne
                   |     |
                   |     --- rarity: "rare"
                   |
                   --- outfitIdTwo
                         |
                         --- rarity: "rare"
    

    所以每个Outfit 对象都存在于Outfits 节点下,规则应该是这样的:

    {
      "rules": {
        "Cosmetics": {
          "Outfits": {
            ".indexOn": "rarity"
          }
        }
      }
    }
    

    如果您没有创建正确的索引,服务器会将所有数据发送到客户端,即过滤发生的地方。更多信息请查看indexing data的官方文档。

    【讨论】:

    • 是的,我的数据库架构是这样的。谢谢!另外,我还有一个关于定价的问题,因为我读过一些关于意外收费的“恐怖”故事。假设我的数据库是~700kb。因此,如果用户下载整个数据库,这意味着我要为700kb 付费(忽略 SSL 加密和其他连接性内容)?
    • 当您在 Firebase 实时数据库中的特定位置附加侦听器时,您将获取该节点中存在的所有数据,包括所有子节点。话虽如此,建议将侦听器附加在树的右(下)层。
    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2017-05-09
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    相关资源
    最近更新 更多