我只想对我在安全规则中确定的1个字段进行写访问。我尝试了这个:
"users":{
".read":"auth !== null",
"$user_id" : {
".write":"newData.children.size() === 1 newData.hasChild('isConnected') && newData.child('isConnected').isBoolean()", // i know this is a little weird, but for prescence, it needs to be able to write to the user enpoint even if the token expired
}
但是我得到这个错误:没有这样的方法/属性“子级”。
答案 0 :(得分:0)
在特定字段本身而不是父字段上定义规则。确保父级不允许在任何地方进行写操作,然后根据自己的条件启用各个字段的写操作:
"users":{
".read": "auth !== null",
"$user_id": {
"isConnected": {
".write": "newData.isBoolean()"
}
}
}
如果您将安全规则与Firestore进行比较(可让您获取文档中的字段列表),则应该知道Firestore不允许您在每个字段中表达单独的规则,因此必须检查在整个文档的规则中分别针对他们。实时数据库做允许您为任意嵌套的子代指定规则,因此您可以在此处利用它。