我正在尝试使用Cloud Firestore安全规则。是否可以过滤文档字段?
例如,如果您有文件
firebase.firestore.doc('users/doe-uid')
然后一些用户不允许使用电子邮件地址获取文档。他们的应用程序用
请求文档{
name: "John Doe",
}
并获取此文档
Let results = personsAttributes.GroupBy(Function(p) New With {Key .ID = p.PersonID, Key .Date = p.SomeDate})
From result in results
Select New MyType With
{
.PersonID = result.Key.ID,
.Date = result.Key.Date,
.Type1 = result.Where(Function(r) r.AttributeType = "Type1").Select(Function(r) r.AttributeValue).FirstOrDefault()
}
如果是,怎么样?
我认为这应该是可能的,因为Cloud Firestore Security Rules Reference在第一句中说(重点是我的):
Cloud Firestore安全规则用于确定谁拥有对存储在Cloud Firestore中的馆藏和文档的读写权限,以及文档的结构和包含的字段和值。
但是我在参考文献中找不到任何内容,告诉我如何过滤掉字段。
答案 0 :(得分:2)
Firestore规则不是过滤器,它们是文档查询的服务器端验证,这意味着您访问(或不访问)整个文档,而不是特定字段。
您提到的文档意味着您可以对字段进行数据验证。
以下是验证写入查询数据的规则的基本示例(通过request.resource.data
):
match /users/{userId} {
allow write: if request.resource.data.age is int;
}
以下是使用现有字段验证读取查询的另一个基本示例(通过resource.data
):
match /articles/{articleId} {
allow read: if resource.data.isPublished == true;
}
要过滤掉字段,请在查询后在客户端执行此操作。
现在,如果您想要保护对某些字段的访问权限,您必须使用不同的规则集创建另一个集合(查看subcollections),并进行另一个符合这些规则的查询。