Firebase Firestore规则:我们可以访问父级';子规则中的文档通配符?
让我们遵守以下规则:Firebase Firestore规则:我们可以访问父级';子规则中的文档通配符?,firebase,google-cloud-firestore,firebase-security,Firebase,Google Cloud Firestore,Firebase Security,让我们遵守以下规则: match /users/{user} { // Do not specify any authentication for the read rule - Do not specify any delete rule allow create: if request.auth.uid != null && resource.data.login == "Anonymous" && resource.data.avatar_is_def
match /users/{user} { // Do not specify any authentication for the read rule - Do not specify any delete rule
allow create: if request.auth.uid != null && resource.data.login == "Anonymous" && resource.data.avatar_is_defined == false && resource.data.show_in_amounts_ranking == false && resource.data.amount == 0.0 && resource.data.deleted == false;
allow update: if request.auth.uid != null && request.auth.uid == user && resource.data.deleted != true;
allow read: if resource.data.deleted != true;
match /seals/{seal} { // Do not specify any delete rule
allow create: if request.auth.uid != null && request.auth.uid == user && get(/databases/$(database)/documents/users/$(user)).data.deleted != true && resource.data.title != "";
allow update: if request.auth.uid != null && request.auth.uid == user && get(/databases/$(database)/documents/users/$(user)).data.deleted != true && ((resource.data.title != "" && request.resource.data.amount > resource.data.amount) || (resource.data.title == "" && request.resource.data.amount == resource.data.amount));
allow read: if get(/databases/$(database)/documents/users/$(user)).data.deleted != true;
在
match/seals/{seal}
的read
规则中使用$(user)
是否正确,即使通配符{user}
是在父项中定义的match/users/{user}
?是的,您可以使用范围内任何外部匹配中的通配符,一路走到顶级服务
范围。它的工作原理与大多数具有嵌套变量作用域的编程语言所期望的一样。请注意,$(数据库)也可以很好地工作,这在更高的级别上是匹配的。再次感谢Doug,一如既往!顺便说一句,您是否可以确认存在“异常”:仅使用资源.数据
,无法访问父文档的字段,但需要获取
(我在SO问题的公认答案中读到了这一点)?这听起来像是一个不同于你开始提出的问题-请单独发布,并充分解释你正在尝试做什么。嗨,道格,我不会再提出另一个问题,因为我问的问题已经存在于StackOverflow上,我更希望用两三个字快速确认:)但无论如何,非常感谢!