【问题标题】:Struggling Firestore rules苦苦挣扎的 Firestore 规则
【发布时间】:2018-03-17 23:04:31
【问题描述】:

我是 Firestore 规则的新手。我想要的只是检查对象中是否存在用户 ID。我像这样使用FirestoreRecyclerAdapter 读取数据(查询):

 Query query = FirebaseFirestore.getInstance()
                .collection(EVENTS_INFO)
                .whereEqualTo("users." + user.getUid(), true);

Firebase 控制台中的结构如下所示(屏幕截图):

此处的 Firestore 规则:

        service cloud.firestore {
           match /databases/{database}/documents {

              function isSignedIn() {
                 return request.auth.uid != null;
              }

              match /events/{event} {

                 function isUser() {
                    return isSignedIn() && resourse.data.users[request.auth.uid] == true;
                 }

                 allow read: if isUser();
              }
           }

由于没有模拟器,我无法快速解决问题。 allow read: if true 按需要工作。有什么线索吗?

【问题讨论】:

  • 根据您发布的规则,我们无法看到这些规则适用于何处(哪个集合或文档)。如果您发布完整的规则,我们可能会更容易提供帮助
  • 请同时发布您用于读取数据的代码

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


【解决方案1】:

这条线有问题...

resourse.data.users[request.auth.uid] == true;

resourse 应该写成resource

【讨论】:

  • 那里不允许使用美元符号。看来我拼错了资源。那是个问题。请编辑以便我接受。
  • 是的。你是对的。我刚刚阅读了规则参考。我现在就编辑它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2016-08-04
相关资源
最近更新 更多