2017-10-13 6 views
0

私はorderByでクエリを作成しようとしていますが、別の空の子があります。別の空のノード enter image description hereを取得Firebase OrderByChildは余分な空の子を返します

成分.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

期待される結果: 空ノードのない同じ結果。

さらに私は別の注文を作り、lsを6にしたいのですが、どうすればいいですか?

答えて

1

数値インデックスを使用してノードを格納しています。つまり、Firebase SDKはそれらを配列として解釈します。結果:{ "0": {...}, "2": {...}次に、3つの要素配列[{...}, null, {...}]を作成します。

Firebaseがどのように配列を扱うのかについては、詳しくは、Best Practices: Arrays in Firebaseを参照してください。

この動作を回避する方法は、連続した数字キーを使用しないことです。これを行う最も簡単な方法は、Firebaseのpush()メソッド(-K...という形式のキーを生成し、hereと説明されている)を呼び出すか、数字の前に固定の文字列(たとえばCourse0,,)を付けることです。これらのフォーマットは文字列なので、Firebase SDKの配列 - 強制ロジックをバイパスします。

関連する問題