Firestore规则对象的映射

时间:2017-10-23 14:02:51

标签: firebase firebase-security google-cloud-firestore

我有一个收藏品。每个文档都有一个对象阅读器,用于存储可以访问文档的人的uid。它可以是一个或多个可以访问文档的用户 enter image description here

我正在使用角火基

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();
    });
  }

如果我使用规则允许所有读取,我的页面将显示正确的条目

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

如果我添加规则以使用uid进行过滤,我会收到错误或权限不足的错误。

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

感谢我对规则做错的任何帮助。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

您是否尝试将数据库规则的规则更改为auth = null?

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

答案 1 :(得分:0)

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

//Firebase rules
Rules:{
 "documentToshare: {

match documentToshare/documentUsers/&uid
}
}

这是一个快速的例子,可能无效但它应该给你一个想法