Firebase docs涵盖按指定子键过滤。但它假设孩子的价值是知道的。它不包括儿童是动态值的情况(例如:学生卷号)
指定的子名称示例数据
{
"Student1": {
"semister": {
"english" : 80,
"maths" : 60
}
},
"Student2": {
"semister": {
"english" : 40,
"maths" : 45
}
}
}
让数学成绩高于50的学生
[GET] https://<baseurl>/students.json?orderBy="semister/maths"&startAt=50
动态子名称示例数据
{
"Student1": {
"unit1": {
"english" : 80,
"maths" : 60
},
"unit2": {
"english" : 80,
"maths" : 60
}
},
"Student2": {
"semister": {
"english" : 40,
"maths" : 50
},
"unit2": {
"english" : 80,
"maths" : 60
}
}
}
使用下面的
我收到错误
让任何单位的数学得分高于50的学生
[GET] https://<baseurl>/students.json?orderBy="$unit/maths"&startAt=50
感谢任何帮助/建议
答案 0 :(得分:0)
问题是您没有所有单位的火力点位置。如果您想要更强大的查询,则需要使数据更具关系性。 `
Students: {
student1: {
units: {
unit1:true,
unit2:true
}
},
student2: {
units:{
unit3:true,
unit4:true
}
}
}
Units: {
unit1: {
student: student1
english: 80,
math: 40,
},
unit2: {
student: student1
english: 60,
math: 75,
}
unit3: {
student: student2
english: 63,
math: 29,
}
unit4: {
student: student2
english: 20,
math: 90,
}
}
`
此组织允许您执行所需的查询,但更重要的是,其他对象可以引用unit1的相同实例,因此现在您有单位信息的一个事实来源,因此您不会有冲突的数据。