可設定的rules 有四種 type:
有這幾種現有的變數可以使用
讀取:
{
"rules": {
"users": {
// 只能讀取18歲以上
".read": "data.child('age').val() >= 18",
"name": {
// 不加也可以, 因為default就是false
".read": false
}
}
}
}
寫入:
{
"rules": {
".write": true,
"users": {
// 要新增的資料必須包含這兩個欄位
".validate": "newData.hasChildren(['name', 'age'])",
"name": {
// 名稱必須包含在"/team_frontend/"的子節點
".validate": "root.child('team_frontend/' + newData.val()).exists()"
},
"age": {
// 必須是數字且值在1到99之間
".validate": "newData.isNumber() &&
newData.val() >= 1 &&
newData.val() <= 99"
}
}
}
}
排序:
過濾:
這邊可以印出我們users所有的資料
DB_USERS.orderByKey().once('value').then(snapshot => {
snapshot.forEach(childSnapshot => {
console.log(childSnapshot.val());
});
})
如果資料是用push()存入, 就可以用orderByKey()取出, orderByChild() 可傳入子節點的參數, 然後用過濾的方式將資料取出, 舉例:
firebase.database().ref('team_frontend/' + name).orderByChild("age").startAt(20).once('value').then(function(snapshot){
snapshot.forEach(function(childSnapshot) {
console.log(childSnapshot.val());
//在team_frontend裡按照年齡排序, 並且年齡大於20以上的人
});
})
參考資料 YJ BLOG