我使用的Objective-C API的火力地堡來獲取數據和我能夠這樣做,當我的安全規則(通過在線火力地堡的儀表盤設置)不利用任何通配符的路徑,如:安全規則無法使用的Firebase通配符路徑?
{
"rules": {
"user" : {
".read" : true,
".write" : true
},
"users" : {
".read" : true,
".write" : false
}
}
}
但當我嘗試制定什麼應該是使用通配符的路徑相同的安全規則和獲取的對象,完成處理器根本不會執行,如:
{
"rules": {
"user" : {
".read" : true,
".write" : true
},
"users" : {
"$userId" : {
".read" : true,
".write" : false
}
}
}
}
我用火力地堡文檔下面的網址,不能弄清楚什麼我做錯了:https://www.firebase.com/docs/security/quickstart.html
我不認爲問題是Objective-C特定的,但只是爲了徹底我使用方法-[FQuery observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { }]
來獲取我的數據。
更新:這裏是po query
對我使用調試的特別FQuery輸出:
(/users {
ep = 0;
i = hidden;
sp = 0;
})
更新2:這是我的數據結構,在相關情況:
{
"user" : {
"HhMeloQDY4" : {
"info" : {
"name" : "Anita Borg"
}
},
"QxnjCNOj3H" : {
"info" : {
"name" : "Charles Babbage"
}
},
"zeNalC4ktf" : {
"info" : {
"name" : "Beyoncé"
}
}
},
"users" : {
"HhMeloQDY4" : {
"hidden" : false
},
"QxnjCNOj3H" : {
"hidden" : false
},
"zeNalC4ktf" : {
"hidden" : true
}
}
}
更新3:^h ERE的我的我如何創建我FQuery對象Objective-C代碼:
Firebase *firebase = [[Firebase alloc] initWithUrl:@"https://<my-app-name>.firebaseio.com"];
[[firebase childByAppendingPath:@".info/connected"] observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
BOOL isConnected = [snapshot.value boolValue];
// broadcast whether app is connected to Firebase
}];
Firebase *directory = [firebase childByAppendingPath:@"users"];
FQuery *query = [directory queryOrderedByChild:@"hidden"];
query = [query queryEqualToValue:value];
[query observeSingleEventOfType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) {
// data successfully retrieved from Firebase
}];
'FQuery'指向什麼? –
FQuery是Firebase Objective-C庫中的一個查詢類:https://www.firebase.com/docs/ios-api/Classes/FQuery.html –
我知道它是什麼類。我想知道它指向什麼,因爲這很可能說明讀取操作失敗的原因。 –