我试图允许每个用户使用firestore读写自己的数据,但我遇到了权限不足错误.我不知道为什么.

我为我的firestore制定了这些规则.我只是try 将用户的UID(存储在createdBy属性中)与请求中可访问的用户UID进行比较.认证.uid

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
     match /bots/{id} {
       allow read, write: if request.auth != null && resource.data.createdBy == request.auth.uid;
              
       match /order_history/{id} {
         allow read, write: if request.auth != null && resource.data.createdBy == request.auth.uid;
       }
    }
  }
}

以及检索数据的查询:

const orders = await getDocs(query(collectionGroup(db, 'order_history'), orderBy('datetime'), where('createdBy', '==', user.uid)));
    setOrders(orders.docs.map((doc) => ({
      ...doc.data()
    })))
}

Here is an overview of my Firestore organization: enter image description here

我的正面是FirebaseError: Missing or insufficient permissions.

我做错了什么?

推荐答案

您正在执行集合组查询,该查询需要以下类型的规则:

match /{path=**}/order_history/{id} {
  allow read: ...
}

这是因为集合组为数据库中任何路径上的文档编制索引,因此您还需要从任何路径读取该数据的权限.

另请参阅defining security rules for a collection group query上的文档

Reactjs相关问答推荐

react 路由导航不工作,但手动路由工作

Formik验证不适用于物料UI自动完成

有没有办法将MUI网格元素与Flex-Start对齐?

透明MOV文件未出现在我的React网页中

ctx.strokeStyle 在 canvas html 5 中不起作用

Spring Boot + React + MySQL应用的架构层面有哪些?

React 状态不更新

每次状态更改时都会提交react 表单

有没有办法在用户离开页面时防止输入模糊?

使用 map 循环浏览列表列表中的列表并显示它们

如何使用样式化函数为 TextField 的输入组件设置样式

在 React 中,为什么在使用 addEventListener 时外部元素上的 onclick 事件监听器在内部元素的 onclick 事件监听器之前执行?

在 React 的父级中多次调用子级时从子级获取数据到父级

无法读取未定义的react native 的属性参数

谁能根据经验提供有关 useEffect 挂钩的更多信息

加密 Django Rest Framework API 响应 + 解密响应应用程序中的响应

如果 URL 已随功能组件更改,则取消刷新

将 C# Razor 条件块转换为 React.js 代码

由于另一个子组件,如何在react 中渲染另一个子组件

仅react material 表前端分页