firebase 为什么Firestore规则中的resource.data不正确工作?

juud5qan  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(105)

我有问题,允许用户使用这样的规则read数据:


的数据
这里我检查身份验证的用户是发送者还是接收者。
下面是消息示例:



以下是用户集合:



问题是这样的规则行不通。即使有两个条件之一,它也会失败。
实际上,它甚至看不到resource.data中的fromUsertoUser属性。
但在测试中,它允许阅读:

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

kpbwa7wx

kpbwa7wx1#

如果我正确理解你的问题和评论,你正面临“规则不是过滤器”的限制。
您的查询“必须遵循安全规则设置的约束”,因此这意味着它应该在fromUsertoUser字段上进行过滤,而不是这样:

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

字符串

  • (从上面的评论查询)*

请注意,您在“Rules Playground”中的模拟工作,因为您正在获取一个文档,(按其ID,请参见字段Location),它遵循安全规则设置的约束
最后,为了更容易编写查询,我将在message doc中添加一个Array类型的字段,其中包含fromUsertoUser的ID。通过这种方式,您可以使用array-contains进行查询,还可以使用in操作符简化您的安全规则。

相关问题