我有这个JSON结构:
{
"groups" : {
"-KBxo9-RoY0eowWKeHkU" : {
"author" : "rsenov",
"members" : {
"-KBxo7ZU6McsmDOxyias" : true,
"-KBxo8_TUTW6NZze6xcd" : true,
"rsenov" : true
},
"name" : "Prueba 3"
}
},
"users" : {
"-KBxo7ZU6McsmDOxyias" : {
"avatar" : "owl2",
"groups" : {
"-KBxo9-RoY0eowWKeHkU" : true
},
"isUser" : false,
"name" : "Pepa"
},
"-KBxo8_TUTW6NZze6xcd" : {
"avatar" : "monkey",
"groups" : {
"-KBxo9-RoY0eowWKeHkU" : true
},
"isUser" : false,
"name" : "Lolas"
},
"rsenov" : {
"avatar" : "guest",
"groups" : {
"-KBxo9-RoY0eowWKeHkU" : true
},
"isUser" : true,
"name" : "Ruben",
}
}
}
并且安全和规则文件是:
{
"rules": {
".read": true,
".write": true,
"users": {
".indexOn": ["email", "groups"]
},
"groups": {
".indexOn": ["author", "name"]
}
}
}
我试图运行查询以获取ChildChanged快照:
DataService.dataService.USERS_REF.queryOrderedByChild("groups").queryEqualToValue(currentGroup.groupKey).observeEventType(.ChildChanged, withBlock: {snapshot in
print(snapshot)
})
DataService.dataService.USERS_REF
对应于指向"用户"的网址。密钥,currentGroup.groupKey
在这种情况下等于-KBxo9-RoY0eowWKeHkU
。
根据这个查询,我应该得到已经改变的孩子的快照。例如,如果我替换用户名" Pepa"到"测试",我应该得到快照:
"-KBxo7ZU6McsmDOxyias" : {
"avatar" : "owl2",
"groups" : {
"-KBxo9-RoY0eowWKeHkU" : true
},
"isUser" : false,
"name" : "Test"
}
但这个查询永远不会被调用...... 我的查询中有什么问题吗?
答案 0 :(得分:0)
"我试图运行查询以获取ChildChanged快照:"有点奇怪。
您可以通过ChildChanged查询数据或观察节点。
如果您只是希望收到有关用户节点内更改的通知,请向该节点添加一个观察者,当Pepa更改为Test时,将通知您的应用并提供已更改的用户节点的快照。
ERROR_UNRECOGNIZED_MEDIA
哦,不需要queryOrderedByChild,因为快照只包含更改的单个节点。