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