我尝试使用orderBy进行查询,然后又得到另一个空子。
组件.ts
loadCourses(){
this.profileProvider.getSpecificCourse().on('value',f=>{
console.log(f.val());
})
}
提供商
getSpecificCourse(){
return firebase.database().ref(`CoursesRelated`).orderByChild('cs').equalTo(2);
}
预期结果: 没有空节点的结果相同。
另外我想制作另一个orderby并将ls等于6,我该怎么做?
答案 0 :(得分:1)
您正在使用数字索引来存储节点,这意味着Firebase SDK会将它们解释为数组。对于结果:{ "0": {...}, "2": {...}
然后创建一个三元素数组[{...}, null, {...}]
。
有关Firebase如何处理数组的详细解释,请阅读此博文Best Practices: Arrays in Firebase。
摆脱这种行为的方法是不使用顺序数字键。最简单的方法是通过调用Firebase的push()
方法(以-K...
格式生成密钥并解释为here)或前缀来添加项目具有固定字符串的数字(例如Course0
,Course1
,Course2
)。由于这些格式是字符串,因此它们会绕过Firebase SDK的阵列强制逻辑。