나는 문서 모음을 가지고 있습니다. 각 문서에는 소유자에 대한 참조 인 자식 uid
이 있습니다. 대표적인 문서 :사용자가 파이어베이스에서 읽을 권한이있는 문서 중에서 검색
/documents
수집에서 보관 및 저장하고이를 검색 할 UID를 일치하는 사용자 만 허용 할
{
"uid": "slfjs092320i3jf023jf",
"content": "Example"
}
. 다음과 같은 규칙을 만들었습니다 :
{
"rules": {
"documents": {
"$documentId": {
".read": "data.child('uid').val() === auth.uid",
".write": "newData.exists() && newData.child('uid').val() === auth.uid || data.exists() && data.child('uid').val() === auth.uid",
".indexOn": ["uid"]
}
}
}
}
유감스럽게도 사용자의 문서를 검색하려면 권한이 거부되었습니다. 문서를 검색하려면 다음을 사용하십시오.
export default getUserDocuments =() => {
const userUid = firebase.auth().currentUser.uid;
return firebase.database()
.ref('/documents')
.orderByChild('uid')
.equalTo(userUid)
.once('value');
};
사용자 문서를 어떻게 쿼리합니까? 거부 된 권한은 쿼리를 수행하는 데 필요한 읽기 제한과 관련이 있다고 생각합니다.
답변 해 주셔서 감사합니다. 이 데이터를 저장하는 좋은 방법은 무엇입니까? 내 문서에도 범주가 있다고 가정 해보십시오. 두 개의 모음을 만들어야합니까? 구조 와 usersDocuments' '라는 이름의 한 { $의 UID : { 내용 : "예" } } , 구조 { $ 범주와 두 번째'documentsWithCategories' : { document1tId : 사실, document2Id : true } } ? –
일반적으로 현재 구조로는 충족시킬 수없는 각 유스 케이스의 최상위 목록이 만들어집니다. 이러한 목록은 전체/부분 복제본이거나 단지 사용자 색인과 같은 수동 색인 일 수 있습니다. –