我有问题,允许用户使用这样的规则read
数据:
的数据
这里我检查身份验证的用户是发送者还是接收者。
下面是消息示例:
的
以下是用户集合:
的
问题是这样的规则行不通。即使有两个条件之一,它也会失败。
实际上,它甚至看不到resource.data
中的fromUser
和toUser
属性。
但在测试中,它允许阅读:
你能告诉我我错在哪里吗?因为我不明白为什么我不能在Firestore规则中同时访问resource.data.fromUser
和resource.data.toUser
?(我正在通过Google使用firebase身份验证)
1条答案
按热度按时间kpbwa7wx1#
如果我正确理解你的问题和评论,你正面临“规则不是过滤器”的限制。
您的查询“必须遵循安全规则设置的约束”,因此这意味着它应该在
fromUser
或toUser
字段上进行过滤,而不是这样:字符串
请注意,您在“Rules Playground”中的模拟工作,因为您正在获取一个文档,(按其ID,请参见字段
Location
),它遵循安全规则设置的约束最后,为了更容易编写查询,我将在
message
doc中添加一个Array类型的字段,其中包含fromUser
和toUser
的ID。通过这种方式,您可以使用array-contains
进行查询,还可以使用in
操作符简化您的安全规则。