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 Bả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.
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
Đó sẽ là lỗi cú pháp. – William
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