【发布时间】:2017-10-26 18:37:11
【问题描述】:
我们的数据库结构如下:
trips
12345
toArea
radius: 150
name: "citycenter"
54321
toArea
radius: 250
name: "main street"
我们尝试创建一些从文档中读取的规则:
match /chats/{trip} {
match /messages/{message} {
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea != null
}
}
一切正常
但下一条规则不起作用:
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea != null
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea.radius != null
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea.radius == null
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea["radius"] == null
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data.toArea["radius"] != null
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data["toArea.radius"] == null
allow read, write: if get(/databases/$(database)/documents/trips/$(trip)).data["toArea.radius"] != null
我真的不明白它有什么问题,两个相反的规则(==null / != null)怎么会不起作用。我们如何管理规则中的字段 toArea.radius?
【问题讨论】:
-
试试
.data.toArea.data.radius -
我们目前在规则中遇到嵌套属性问题,这几乎绝对不是您的错。我们正在尽快推出修复程序,感谢您的耐心等待!
-
会一直是
.data.field.data吗?
标签: firebase-security google-cloud-firestore