为什么 Firestore 规则中的 resource.data 无法正常工作?

迈克尔学习者

我在允许用户read使用这样的规则数据时遇到问题:

在此处输入图像描述

在这里,我检查经过身份验证的用户是发送者还是接收者。

这是消息示例:

在此处输入图像描述

这是用户集合:

在此处输入图像描述

问题是这样的规则不起作用。即使有两个条件之一,它也会失败。

它实际上甚至没有看到属性fromUsertoUserin resource.data

但在测试中它允许阅读:

在此处输入图像描述 在此处输入图像描述

你能告诉我我在哪里弄错了吗,因为我不明白为什么我不能同时访问resource.data.fromUserFirestoreresource.data.toUser规则?(我正在通过 Google 使用 Firebase 身份验证)

雷诺·塔内克

如果我正确理解您的问题和评论,您将面临“规则不是过滤器”的限制。

您的查询“必须遵循您的安全规则设置的约束”,因此这意味着它应该过滤字段fromUsertoUser字段,但情况并非如此:

firestore.collection("messages").where("access", "==", hashId).orderBy("createdAt")

(从您上面的评论中查询)


请注意,您在“规则游乐场”中的模拟有效,因为您正在获取一个文档(通过其 ID,请参见字段Location),该文档遵循您的安全规则设置的约束


最后,为了更容易编写查询,我将在message文档中添加一个 Array 类型的字段,其中包含 和 的fromUserID toUser通过这种方式,您可以使用操作员查询array-contains并简化您的安全规则in

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

resource.data.size()如何在Firestore规则(被计算在内)中工作?

为什么@Resource在HttpServlet中不能工作?

为什么这个“自动换行:断字”规则在Firefox中无法正常工作?

firestore安全规则resource.data为空对象

无法使用Firestore规则中的“获取”部分获取功能以正常工作

为什么我的getTimestamp()方法在php中无法正常工作?

为什么高度:0在CSS定义中无法正常工作

为什么我的包裹中的功能无法正常工作

为什么在webview中的javascript无法正常工作?

为什么接头在angular js中无法正常工作

为什么我的代码中的fprintf()函数无法正常工作?

为什么if块中的条件无法正常工作?

毕加索无法在android 10中正常工作。为什么?

为什么这种简单的比较在JavaScript中无法正常工作?

为什么类型转换在Swift 2.0中无法正常工作?

为什么sed中的\ d无法正常工作?

为什么Skimage中的'imshow'在移位时无法正常工作

为什么循环/分组在jQuery中无法正常工作

为什么流查看在 HashMap 中无法正常工作

为什么在Oracle中无法正常工作的情况

为什么正向遍历for循环在JavaScript中无法正常工作

为什么Docker容器中的Django无法正常工作?

为什么注释在Cartopy中无法正常工作?

为什么“插入或更新”中的命令更新无法正常工作?

为什么JQuery中的.join()无法正常工作?

为什么在JavaScript中的indexOf无法正常工作?

为什么同步在此代码中无法正常工作?

为什么我在jquery中的focus()无法正常工作?

为什么Vue中的@mouseover操作无法正常工作