我想創建一個有很多用戶數據的應用程序。假設每個用戶都跟蹤他們自己的每個任務的時間。如果我將它平放它看起來像這樣:存儲用戶數據Flattenned安全
{
users: {
USER_ID_1: {
name: 'Mat',
tasks: {
TASK_ID_1: true,
TASK_ID_2: true,
...
}
},
},
tasks: {
TASK_ID_1: {
start: 0,
end: 1
},
TASK_ID_2: {
start: 1,
end: 2
}
}
}
現在我想查詢並獲取用戶的所有任務信息。現在數據很小。從他們的指南:https://www.firebase.com/docs/web/guide/structuring-data.html它說(接近尾聲)「...直到我們進入成千上萬的記錄...」,然後沒有解釋如何處理。
所以我的問題如下。我知道我們無法通過安全進行篩選,但是我可以使用安全性限制用戶訪問的內容,然後在搜索時將其從用戶標識中刪除?然後我的結構會變成這樣:
{
users: {
USER_ID_1: {
name: 'Mat'
}
},
tasks: {
TASK_ID_1: {
user: USER_ID_1,
start: 0,
end: 1
},
TASK_ID_2: {
user: USER_ID_1,
start: 1,
end: 2
},
...
}
}
然後我會成立我的安全規則,只允許每個任務由誰創造了它的用戶進行訪問,我的裁判查詢應該是這樣的:
var ref = new Firebase("https://MY_FIREBASE.firebaseio.com/");
$scope.tasks = $firebaseArray(ref.child('tasks/')
.orderByChild('user')
.startAt('USER_ID_1')
.endAt('USER_ID_1'));
這是我該如何構造它?我的查詢有效,但我不確定一旦我引入安全性,一個用戶無法看到其他用戶任務時它是否會工作。
這就是我害怕的!有沒有解決的辦法?你有關於如何構建數據的建議嗎?我能想到的唯一事情就是隱藏每個用戶的所有內容。附:感謝您的快速響應:) –
您的初始數據結構爲每個用戶列出了他們有權訪問的任務的索引。因此,你不需要查詢,你可以'ref.child('users')。child(authData.uid).child('tasks')。on(...'。 –
對,但是我怎麼做得到所有的任務數據?這將讓我知道什麼是正確的ID? –