如何使用 Firebase 规则授予 read/write 对所有节点的访问权限?

How do I give read/write access to all nodes with Firebase rules?

默认设置提供完全访问权限:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

为了测试我对 Firebase 指南和文档中规则编写的理解,我(现在撤退)试图通过为 4 个父节点编写规则来获得相同的结果。

如果有区别,前两个节点只有值,没有子节点。 **Sidequest:它们还叫节点吗?

下面的规则会导致与上面的规则更改为错误读写时相同的行为。

    {
  "rules": {
    "myNode1": { 
      ".read" : true,
      ".write" : true
    },
    "myNode2" : {
      ".read" : true,
      ".write" : true
    },
    "myNode3" : {
      ".read" : true,
      ".write" : true
    },
    "myNode4" : {
      ".read" : true,
      ".write" : true
    }
  }
}

我的规则有什么问题?

UPDATE/context:

我有一个在 运行 处停止的 authDataCallback(在 if (authData) { 子句中):

var ref = new Firebase("https://<my>.firebaseio.com")

ref.once("value", function(snapshot){ 

发现如果我将 ref var 更改为更具体的内容:var ref = new Firebase("https://<my>.firebaseio.com/myNode1"),authDataCallback 将完整运行。

当然没有必要生成整个数据库的快照;这是一种获取我需要的数据的混乱方式。我已经更新了,但我仍然很困惑为什么考虑到我对整个数据库进行了读写,规则会阻止回调。

我认为这是基于所提供信息的答案:

您发布的两组规则不同。第一组

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

允许每个人在

的 firebase 中对每个节点(包括父节点)进行读写访问
https://<my>.firebaseio.com

第二组规则允许每个人访问您的 firebase 引用中的特定节点,但阻止访问所有其他节点,包括访问父节点。在更新中,代码试图读取没有为其定义规则的父节点,因此默认情况下读取和写入都是错误的。

假设你有以下结构:

https://whirlygig.firebaseio.com

Whirlygig
  someRandomData: "3.141"
  otherRandomData: "6.02"
  myNode1
    firstName: "first"
    lastName: "last"
  myNode2
    first: "first"
    last: "last"

有了你的第一组规则,每个人都可以访问 someRandomData 以及 myNode1、myNode2 等

使用第二组规则,每个人只能访问 myNode1 和 myNode2,但不能访问 someRandomData