保存安全规则时报错Error saving rules - Line 5: Expected '{' 如何解决
问题原因
该报错是因为你误用了安全规则的语法,你当前使用的JSON结构是Firebase Realtime Database的规则格式,这类规则仅支持.read、.write两个顶层权限关键字,不存在单独的.delete配置项:
.write权限天然覆盖新增、更新、删除三类写入操作,无需单独声明删除权限- 规则解析器识别到不合法的
.delete字段后,会默认预期该位置是子节点的规则对象(以{开头),因此抛出第5行Expected '{'的语法错误
如果你是想编写Firestore的安全规则,也会触发该报错:Firestore规则不使用JSON结构,语法和Realtime Database完全不兼容。
解决方案
场景1:使用的是Firebase Realtime Database
- 如果要全局开放所有操作权限(含删除),直接删除
.delete相关的配置即可,.write: true已经包含删除权限,修改后规则如下:
{ "rules": { ".read": true, ".write": true } }
- 如果需要单独控制删除权限,可以在
.write规则中通过newData.exists()判断操作类型,示例如下:
{ "rules": { ".read": true, // 示例:仅认证用户可执行删除操作,未认证用户仅可新增/更新数据 ".write": "newData.exists() || auth != null" } }
注:newData.exists()返回false时,代表当前请求为删除操作
场景2:使用的是Firebase Firestore
请使用Firestore专属的规则语法,示例如下:
rules_version = '2'; service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write, delete: if true; } } }
内容的提问来源于stack exchange,提问作者Артём
相关产品推荐
相关产品推荐

