Firebase安全规则:.indexOn唯一ID
我有这个结构:
"post": { "groupMember": { "-KHFHEHFWDB1213": "true", "-KSJHDDJISIS011": "true", "-KJSIO19229129k": "true" } }
我想.indexOn自动生成的唯一groupMember id。
我试过这样做:
"post": { ".indexOn": "groupMember" ... }
但我仍然收到这个错误:
考虑在/ post添加“.indexOn”:“groupMember / -KHFHEHFWDB1213”
那么如何在唯一ID上添加.indexOn?
更新:
这是我使用的查询(在Swift中):
postRef.queryOrderedByChild("groupMember/\(uid)").queryEqualToValue(true).observeEventType(.Value, ... )
要查询其中一个给定键的值是否为"true"
(请注意,键入的数据结构是字符串,而不是布尔值 – 需要注意的东西!)您需要创建安全规则,如下所示:
{ "post": { "groupMember": { "$memberId": {".indexOn": ".value"} } } }
然后在/post/groupMember
路径上使用queryOrderedByValue("true")
。 需要注意的重要事项是规则中的$memberId
,它声明了表示自动生成的id的通配符键和.value
,它表示不是索引子属性(如果你的结构有另一层嵌套),而是要在立即叶节点值。