0
我有一個firebase數據庫,用戶可以在其中提交posts
。如果帖子是私人提交的,其他用戶無法閱讀。列出所有包含firebase規則的項目
看到數據庫和規則如下:
// FIREBASE DATABASE:
{
"posts" : {
"-PaNtmNIFp9sTT549-Kn" : {
"author" : "XXXYYY",
"content" : "New post",
"public" : true
},
"-PaNw0ak27MfcU5Vff1t" : {
"author" : "XXXYYY",
"content" : "Secret post",
"public" : false
},
"-PaOPhX3SwRe2ThEFWJo" : {
"author" : "XXXYYY",
"content" : "another post",
"public" : true
}
},
"user-posts" : {
"XXXYYY" : {
"-PaNtmNIFp9sTT549-Kn" : true,
"-PaNw0ak27MfcU5Vff1t" : true,
"-PaOPhX3SwRe2ThEFWJo" : true
}
}
}
// RULES:
{
"rules": {
"posts": {
"$post": {
".read": "auth !== null && data.child('public').val() === true || data.child('author').val() === auth.uid"
}
}
}
}
這工作得很好,但只有當我取回物品後郵寄:
// DOES NOT WORK
firebase.database().ref().child('posts').on('value', snap => {
console.log(snap.val())
});
// DOES WORK
var children = ["-PaNtmNIFp9sTT549-Kn", "-PaNw0ak27MfcU5Vff1t", "-PaOPhX3SwRe2ThEFWJo"];
children.forEach(function(child) {
rootRef.child(child).on('value', snap => {
console.log(snap.val())
})
})
我想這Rules are not Filters,對不對?然後我的問題變成:
- 我該如何提示用戶使用正確的實體來尋找?我應該使用所有公共帖子密鑰創建單獨的節點,即名爲
publicPosts
? - 如果我仍然希望能夠按照他們的內容對公共帖子進行排序,我該如何去做這件事?只需在新節點
publicPosts
中複製可能與查詢相關的所有數據?
謝謝!