首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Firebase:允许对不同集合进行读或写访问

Firebase:允许对不同集合进行读或写访问
EN

Stack Overflow用户
提问于 2020-09-08 15:35:26
回答 1查看 26关注 0票数 0

我的项目有两个主要的集合:“联系人”和“相册”。

这是我的data structure

我正在尝试将完全读访问权限分配给"albums“集合中的每个人,并将写访问权限限制为未经身份验证的用户。同时,我希望将写访问权限分配给未经身份验证的用户,并将读取、更新、删除权限分配给"contact“集合中经过身份验证的用户。

对于经过身份验证的请求和未经身份验证的请求,当前规则集在规则模拟器中均失败。规则如下:

代码语言:javascript
复制
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /contact/{document=**} {
      allow create;
      allow read, update, delete: if request.auth != null;
    }
   }
    match /albums/{document=**}{
      allow read;
      allow write: if request.auth != null;
    }
}

firebase查询返回“onSnapshot: FirebaseError:缺少或权限不足的未捕获错误”。

查询如下:

代码语言:javascript
复制
useEffect(() => {
const unmount = firestore
  .collection("albums")
  .orderBy("date", "asc")
  .onSnapshot((snapshot) => {
    const tempAlbums = [];
    snapshot.forEach((doc) => {
      tempAlbums.push({ ...doc.data(), id: doc.id });
    });
    setAlbums(tempAlbums);
  });
return unmount;
}, []);

对如何纠正规则有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-08 15:54:28

你的规则中有一个打字错误。应该是这样的:

代码语言:javascript
复制
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /contact/{document=**} {
      allow create;
      allow read, update, delete: if request.auth != null;
    }    //The /albums path must be included inside /documents
    match /albums/{document=**}{
      allow read;
      allow write: if request.auth != null;
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63789182

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档