2017-07-08 10 views
1

は、私がこのような構造を持っている:firebase/angularfireのリストを正しく照会する方法は?

enter image description here

私はこれが見つかりました:https://github.com/angular/angularfire2/blob/master/docs/4-querying-lists.mdをしても、私はfirebaseドキュメントをお読みください。

私はこれを試してみてください。

return this.db.list(`${this.API_EVENTS_PATH}`, { 
    query: { 
    equalTo: { 
     value: '[email protected]', 
     key: 'from' 
    } 
    } 
}); 

これは何も与えない:空の配列を。どうして?

もう1つの質問は、2つのフィールドで項目をフィルタリングする方法です。例えば、[email protected]&status=ACCEPTEDが必要です。

どのようにFBで行うことができますか?

答えて

2

最初の質問です。

EqualToフィルタを使用する前に、まずOrderByフィルタが必要です。このOrderByフィルタは、どのフィールドがEqualToを参照すべきかをクエリに伝えます。したがって、クエリは次のようになります。あなたは、通常1つだけのフィールドでフィルタする許可されているfirebaseのように2つのフィールドのNoSQLデータベースで

によってアイテムをフィルタリングする方法

あなたの2番目の質問

については

let path = this.API_EVENTS_PATH; 
return db.list(path , { 
    query: { 
    orderByChild: 'from', 
    equalTo: '[email protected]', 
    } 
}); 

。他のすべての操作は、データベースの編成方法を考慮して行われます。このfirebase videoをチェックしてください。これはfirebaseデータベースで通常のSQLクエリを実行する方法を示しています。お楽しみください

+0

"ファイアベースのようなデータベースでは、通常は1フィールドのみでフィルタリングすることができます" NoSQLデータベースには複数のプロパティのフィルタリングが可能です。これは単なるFirebaseの制限です。私はまた、複数の値をここでフィルタリングして私の答えを読むことをお勧めします:http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase、よりいくつかのシナリオをカバーするデビッドのビデオ。 –

関連する問題