2017-10-13 2 views
0

orderBy를 사용하여 쿼리를 작성하려고하는데 다른 빈 자식이 나타납니다.Firebase OrderByChild가 여분의 빈 자식을 반환합니다.

구성 요소 .TS

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

}

제공

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

} 

중포 기지 구조 enter image description here

점점 다른 빈 노드 enter image description here

예상 결과 : 빈 노드가없는 동일한 결과.

나는 또한 또 다른 orderby를 만들고 ls를 6과 같게 만들고 싶습니다. 어떻게 할 수 있습니까?

답변

1

숫자 인덱스를 사용하여 노드를 저장합니다. 즉, Firebase SDK가 숫자 인덱스를 사용하여 배열로 해석합니다. 결과 : { "0": {...}, "2": {...} 그러면 세 요소 배열 [{...}, null, {...}]이 생성됩니다.

Firebase가 배열을 처리하는 방법에 대한 자세한 설명은이 블로그 게시물 Best Practices: Arrays in Firebase을 참조하십시오.

이 동작을 제거하는 방법은 순차 숫자 키를 사용하지 않는 것입니다. 이를 수행하는 가장 간단한 방법은 Firebase의 push() 메소드 (-K... 형식의 키를 생성하고 설명하는 here)를 호출하거나 고정 된 문자열 (예 : Course0, Course1,)의 접두사로 항목을 추가하는 것입니다. 이 형식은 문자열이기 때문에 Firebase SDK의 배열 - 강제 논리를 무시합니다.

관련 문제