当前位置: 首页 > 知识库问答 >
问题:

基于引用数据类型的Firebase Firestore安全规则

钱俊楚
2023-03-14

在Firestore中,我有一个拥有所有者的项目集合。

所有者可以是用户,应该允许用户读取其文档。

使用userid可以执行以下操作:

allow read, write: if resource.data.userId == request.auth.uid;

但是对于所有者引用字段,在涉及安全规则时似乎没有任何文档。

我尝试了以下安全规则:

allow read, write: if resource.data.owner == 'users/$(request.auth.uid)';

并如下所示进行查询:

const owner = this.db.collection('/users').doc(auth.uid).ref;

const collection = this.db.collection('/items',
  (ref) => ref.where('owner', '==', owner)
);

但我仍然缺少或权限不足。

共有1个答案

秋建义
2023-03-14

这两个规则对我在模拟器(Firebase控制台)中都起作用:

allow read, write: if resource.data.owner == 'users/' + request.auth.uid;

而且

allow read, write: if path(resource.data.owner) == /users/$(request.auth.uid);

但不在我的代码的查询中。

 类似资料:
  • 在之前的 JavaScript 基础文章中(编号 02、编号 07),我们介绍过,变量有以下数据类型: 基本数据类型(值类型):String 字符串、Number 数值、Boolean 布尔值、Null 空值、Undefined 未定义。 引用数据类型(引用类型):Object 对象。 本文,我们针对这两种类型,做个详细介绍。我们先来看个例子。 基本数据类型举例: var a = 23;

  • 问题内容: Eclipse在正在运行的项目中仅使用以下代码(在其中仅包含伪类和main方法)给我警告(标题中): 最后一行触发警告。我不确定我在这里做错了什么,或者实际上我在做什么。我是一名Java学生,正在研究一个可疑的教程,并且试图理解泛型。假设变量x不能说明类型安全性。我尝试将其强制转换为对象类型(我认为它没有任何作用,因为它已经存在了),并且不起作用。 我如何解决此警告? 问题答案: 您声

  • 最近我收到了一系列Firebase通知,涉及: [Firebase]您的Cloud FiRecovery数据库有不安全的规则 我们检测到您的安全规则存在以下问题:任何用户都可以写入您的整个数据库。因为您的项目没有强大的安全规则,任何人都可以访问您的整个数据库。攻击者可以窃取、修改或删除您的数据,并会抬高您的账单` Edit2:我需要的是允许每个人都写,而不需要登录,但是只有管理员帐户应该能够从Fi

  • 本文向大家介绍JavaScript数据类型之基本类型和引用类型的值,包括了JavaScript数据类型之基本类型和引用类型的值的使用技巧和注意事项,需要的朋友参考一下 ECMAScript变量包含两种不同数据类型的值:基本类型值和引用类型值。基本类型值是简单的数据段,而引用类型值指那些可能由多个值构成的对象。 在将一个值赋给变量时,解析器必须确定这个值是基本类型还是引用类型。基本类型包括如Unde

  • 长话短说:java.io包中有多少种基于数据流的流?它们是字节流和字符流还是二进制流和字符流? 完整问题: https://youtu.be/v1_ATyL4CNQ?t=20m5s昨天看了本教程后跳到20:05,我的印象是基于数据流有两种类型的流:BinaryStreams和CharacterStreams。今天,在了解了更多关于这个主题的知识之后,我的新发现似乎与旧发现相矛盾。 互联网上的大多数

  • 本文向大家介绍Java数据类型的规则,包括了Java数据类型的规则的使用技巧和注意事项,需要的朋友参考一下 数据类型的规则   选择合适的数据类型去存储,比如用来存储年龄,他的数值不可能超过200那么就用short存储,才浪费2个字节这样很节约。如果数值永远不大于100那么我们就会用byte来存储,如果这个数值不大于100非得用long长整型去存,就有点浪费了。   但是,现在不比10几年前了,以