Firebase OrderByChild返回额外的空子

时间:2017-10-13 14:18:39

标签: firebase firebase-realtime-database

我尝试使用orderBy进行查询,然后又得到另一个空子。

组件.ts

 loadCourses(){
this.profileProvider.getSpecificCourse().on('value',f=>{
  console.log(f.val());  
})

}

提供商

     getSpecificCourse(){
  return firebase.database().ref(`CoursesRelated`).orderByChild('cs').equalTo(2);  

 }

firebase结构 enter image description here

获取另一个空节点 enter image description here

预期结果: 没有空节点的结果相同。

另外我想制作另一个orderby并将ls等于6,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您正在使用数字索引来存储节点,这意味着Firebase SDK会将它们解释为数组。对于结果:{ "0": {...}, "2": {...}然后创建一个三元素数组[{...}, null, {...}]

有关Firebase如何处理数组的详细解释,请阅读此博文Best Practices: Arrays in Firebase

摆脱这种行为的方法是不使用顺序数字键。最简单的方法是通过调用Firebase的push()方法(以-K...格式生成密钥并解释为here)或前缀来添加项目具有固定字符串的数字(例如Course0Course1Course2)。由于这些格式是字符串,因此它们会绕过Firebase SDK的阵列强制逻辑。