如何设置。indexOn在firebase?

如何设置。indexOn在firebase?,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,这是我的json结构 { "books" : { "sample" : { "eight" : { "author" : "eighta", "name" : "eight", "sub" : { "subauthor" : "eightauthor", "subname" : "general"

这是我的json结构

{
      "books" : {
        "sample" : {
          "eight" : {
            "author" : "eighta",
            "name" : "eight",
            "sub" : {
              "subauthor" : "eightauthor",
              "subname" : "general"
            }
          },
          "eleven" : {
            "author" : "twelvea",
            "name" : "twelve",
            "sub" : {
              "subauthor" : "elevenauthor",
              "subname" : "general"
            }
          },
          "five" : {
            "author" : "fivea",
            "name" : "five",
            "sub" : {
              "subauthor" : "fiveauthor",
              "subname" : "fivesub"
            }
          },
          "four" : {
            "author" : "foura",
            "name" : "four",
            "sub" : {
              "subauthor" : "fourauthor",
              "subname" : "general"
            }
          },
          "nine" : {
            "author" : "ninea",
            "name" : "nine",
            "sub" : {
              "subauthor" : "nineauthor",
              "subname" : "ninesub"
            }
          },
          "one" : {
            "author" : "onea",
            "name" : "one",
            "sub" : {
              "subauthor" : "oneauthor",
              "subname" : "onesub"
            }
          },
          "seven" : {
            "author" : "seven",
            "name" : "seven"
          },
          "six" : {
            "author" : "sixa",
            "name" : "six"
          },
          "ten" : {
            "author" : "tena",
            "name" : "ten"
          },
          "three" : {
            "author" : "threea",
            "name" : "three"
          },
          "two" : {
            "author" : "twoa",
            "name" : "two"
          }
        }
      }
    }
我想获取子名称等于general的数据

我的索引规则

{
  /* Visit https://firebase.google.com/docs/database/security to learn more about security rules. */
  "rules": {
    ".read": true,
    ".write": true,
      "books": {
        "$user_id": {
          ".indexOn": ["subname", "subauthor"]
        }
        }
      }
  }
}

https://myprojectpath/books/sample/eight.json?orderBy="subname"&equalTo="general"&print=pretty

上述规则很有效。但是我需要传递通用api来获取子名称应该是通用的数据。我不能每次调用时都传递8.json、9.json、10.json。我应该只调用一个api,它应该在其中提供子名称应为常规的数据。

如果我理解正确,您希望使用单个查询在所有作者中搜索其子/子名称属性

在这种情况下,可以为每个子节点的sub/subname属性在books/sample上定义索引:

"books": {
    "sample": {
        ".indexOn": ["sub/subname", "sub/subauthor"]
    }
}
这里的示例可以是$user_id这样的$variable,但必须知道.indexOn中的路径

这将在sample下为每个子节点创建一个值为sub/subname的索引,然后可以使用该索引进行查询:

https://myprojectpath/books/sample.json?orderBy="sub/subname"&equalTo="general"&print=pretty