2017-10-23 39 views
5

Tôi đang có một bộ sưu tập. Mỗi tài liệu có một đối tượng độc giả sẽ lưu trữ uid của những người sẽ có quyền truy cập vào các tài liệu. Nó có thể là một hoặc nhiều người sử dụng có thể truy cập vào một tài liệu enter image description hereBản đồ quy tắc Firestore dành cho đối tượng

Tôi đang sử dụng góc căn cứ hỏa lực

constructor(private afAuth: AngularFireAuth, private afs: AngularFirestore) { 
    this.afAuth.authState.subscribe(auth => { 
     this.users = afs.collection<User>('users', ref => ref.where('readers.' + auth.uid, '==', true)).valueChanges(); 
    }); 
    } 

Nếu tôi sử dụng các quy tắc cho phép tất cả đọc, trang web của tôi sẽ hiển thị các mục đúng

match /users/{userId=**} { 
     allow read, write; 
    } 

Nếu tôi thêm vào quy tắc để lọc bằng cách sử dụng uid Tôi nhận được lỗi Thiếu hoặc không đủ quyền.

match /users/{userId=**} { 
     allow read, write: if resource.data.readers[request.auth.uid] == true || 
         resource.readers[request.auth.uid] == true; 
    } 

Đánh giá cao sự trợ giúp về những gì tôi đã làm sai đối với các quy tắc. Cảm ơn trước.

+0

tôi nghĩ rằng bạn cần phải đặt một '.' bên 'nếu resource.data.readers. [Yêu cầu .auth.uid] == true' như thế này – Hareesh

+0

Đó sẽ là lỗi cú pháp. – William

+0

ok trong tài liệu mà họ đã sử dụng '$ (request.auth.uid)' để nhận giá trị. thử 'if resource.data.readers [$ (request.auth.uid)] == true' – Hareesh

Trả lời

0

Bạn đã thử thay đổi các quy tắc của mình về quy tắc cơ sở dữ liệu thành auth = null chưa?

{ 
    "rules": { 
    ".read": "auth == null", 
    ".write": "auth == null" 
    } 
} 
+0

Điều đó sẽ không hoạt động như một bộ sưu tập sẽ có nhiều tài liệu trong đó mỗi tài liệu sẽ được người dùng khác truy cập. – William

0
//Object structure 
"documentToShare"{ 
documentData: {}, 
documentUsers:{user1UID,user2UID} 
} 

//Firebase rules 
Rules:{ 
"documentToshare: { 

match documentToshare/documentUsers/&uid 
} 
} 

nó là một ví dụ nhanh chóng và có lẽ không hợp lệ nhưng nó sẽ cho bạn ý tưởng

Các vấn đề liên quan