You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase实时数据库规则保存失败求助:第2行预期双引号

问题原因与解决方法

你遇到的报错核心是混淆了Firebase Realtime Database和Cloud Firestore的规则语法与配置界面:

1. 报错直接原因

你粘贴的是Cloud Firestore的规则代码,但在Firebase Realtime Database的规则配置页面保存。Realtime Database规则要求严格的JSON格式,而你的代码用了Firestore的规则语法(比如分号、service关键字),不符合JSON规范,所以出现Line 2: Expected '"'(期望双引号)的错误。

2. 分场景解决

场景一:你确实要配置Realtime Database规则

使用符合JSON格式的规则,对应你的需求(用户只能读写自己的用户数据,帖子需验证用户身份且读写权限关联发布者),正确规则如下:

{
  "rules_version": "2",
  "rules": {
    "users": {
      "$userId": {
        ".read": "auth.uid === $userId",
        ".write": "auth.uid === $userId || (auth.uid !== null && newData.exists())"
      }
    },
    "posts": {
      "$postId": {
        ".read": "auth.uid === data.child('userId').val()",
        ".write": "auth.uid !== null && (newData.exists() ? auth.uid === newData.child('userId').val() : auth.uid === data.child('userId').val())"
      }
    }
  }
}
  • JSON格式要求所有键用双引号,键值对用冒号分隔,不能用分号
  • Realtime Database用.read/.write定义权限,通过auth、data、newData等对象判断条件

场景二:你实际想配置Cloud Firestore规则

  1. 切换到Firebase控制台的Cloud Firestore模块,进入「规则」页面
  2. 粘贴修正后的规则代码(去掉最外层多余的大括号,Firestore规则不需要外层包裹):
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, update, delete: if request.auth.uid == userId;
      allow create: if request.auth.uid != null;
    }
    match /posts/{postId} {
      allow read, update, delete: if request.auth.uid == resource.data.userId;
      allow create: if request.auth.uid != null;
    }
  }
}

内容的提问来源于stack exchange,提问作者XxDestroyerxX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:15:03