Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从父节点读取特定叶/子节点的Firebase规则_Firebase_Firebase Realtime Database_Firebase Security - Fatal编程技术网

从父节点读取特定叶/子节点的Firebase规则

从父节点读取特定叶/子节点的Firebase规则,firebase,firebase-realtime-database,firebase-security,Firebase,Firebase Realtime Database,Firebase Security,我的firebase数据库如下所示 "students" : { "firebase_key_1" : { "Name" : "blah blah", "Address" : "blah blah", "Roll No" : "blah blah", "Marks" : { "Sub1" : "blah", "Sub2" : "blah", "Sub3" : "blah", "Total" : "

我的firebase数据库如下所示

"students" : {
  "firebase_key_1" : {
    "Name" : "blah blah",
    "Address" : "blah blah",
    "Roll No" : "blah blah",
    "Marks" : {
        "Sub1" : "blah",
        "Sub2" : "blah",
        "Sub3" : "blah",
        "Total" : "Total",
    },
    "class" : "blah blah",
    "Transportation" : "blah blah",
    "Department" : "blah blah",
},
  "firebase_key_2" : {
    "Name" : "blah blah",
    "Address" : "blah blah",
    "Roll No" : "blah blah",
    "Marks" : {
        "Sub1" : "blah",
        "Sub2" : "blah",
        "Sub3" : "blah",
        "Total" : "Total",
    },
    "class" : "blah blah",
    "Transportation" : "blah blah",
    "Department" : "blah blah",
},
  "firebase_key_3" : {
    "Name" : "blah blah",
    "Address" : "blah blah",
    "Roll No" : "blah blah",
    "Marks" : {
        "Sub1" : "blah",
        "Sub2" : "blah",
        "Sub3" : "blah",
        "Total" : "Total",
    },
    "class" : "blah blah",
    "Transportation" : "blah blah",
    "Department" : "blah blah",
}
}
我正在使用RESTAPI从firebase检索数据。Restapi url看起来像“Marks/Total”&startAt=400

我已经通过firebase规则对学生总数进行了索引。我得到的结果和额外的数据,如姓名,班级,卷号

我希望输出是

    "firebase_key_1" : {
    "Marks" : {
        "Sub1" : "blah",
        "Sub2" : "blah",
        "Sub3" : "blah",
        "Total" : "Total",
    }
},
"firebase_key_2" : {
    "Marks" : {
        "Sub1" : "blah",
        "Sub2" : "blah",
        "Sub3" : "blah",
        "Total" : "Total",
    }
},
"firebase_key_3" : {
    "Marks" : {
        "Sub1" : "blah",
        "Sub2" : "blah",
        "Sub3" : "blah",
        "Total" : "Total",
    }
}
是否有通过RestAPi或规则来实现这一点

例如,我们是否有任何规则可以定义要读取的节点

{
 "users":{
   "students":{
      ".read" : ["$firebaseKey/Marks"],
      ".write" : true,
   }
   }
因此,我可以使用RESTAPI从父节点检索所需的值

任何其他这样做的建议都会很好


提前感谢

Firebase数据库始终返回完整的节点。不可能获得与查询匹配的每个节点的子集。要么返回整个节点,要么不返回

通常,这种类型的请求表示您已经合并了多个应该分离的数据类型。在您的情况下,看起来应该有两个顶级集合:
students
studentMarks
。在
students
下,您保留每个学生的属性,由其学生ID键入。在
studentMarks
下,您保留每个学生的标记,再次由其学生ID键入

因此:


由于您在
学生
学生分数
之间使用相同的键,因此您可以轻松地为用户准备这两组数据。但是现在,您也可以只读取每个用户的属性,或者只读取一组用户的标记。

我不明白您在这里想要实现什么。您是否可以编辑您的问题以显示:1)您要执行的REST调用,2)该位置的JSON(作为文本),3)您希望从调用返回的结果?我已编辑了上述问题。这不是规则的有效语法:
。请阅读:“$firebaseKey/Marks”]
。非常感谢,我将改变结构。我认为会有这样的语法“.read”:[“$firebaseKey/Marks”]。与indexOn相似,这就是为什么我认为我可以坚持这种结构。无论如何,非常感谢。
"students" : {
  "firebase_key_1" : {
    "Name" : "blah blah",
    "Address" : "blah blah",
    "Roll No" : "blah blah",
    "class" : "blah blah",
    "Transportation" : "blah blah",
    "Department" : "blah blah",
  },
  "firebase_key_2" : {
    "Name" : "blah blah",
    "Address" : "blah blah",
    "Roll No" : "blah blah",
    "class" : "blah blah",
    "Transportation" : "blah blah",
    "Department" : "blah blah",
  },
  "firebase_key_3" : {
    "Name" : "blah blah",
    "Address" : "blah blah",
    "Roll No" : "blah blah",
    "class" : "blah blah",
    "Transportation" : "blah blah",
    "Department" : "blah blah",
  }
},
"studentMarks": 
  "firebase_key_1" : {
    "Sub1" : "blah",
    "Sub2" : "blah",
    "Sub3" : "blah",
    "Total" : "Total",
  },
  "firebase_key_2" : {
    "Sub1" : "blah",
    "Sub2" : "blah",
    "Sub3" : "blah",
    "Total" : "Total",
  },
  "firebase_key_3" : {
    "Sub1" : "blah",
    "Sub2" : "blah",
    "Sub3" : "blah",
    "Total" : "Total",
  }
}