2017-12-04 7 views
1

このコード:firebaseフィルタを使用して例外を知らない

var query: Query = store.collection(COLLECTION_USERS) 
     query = query.whereGreaterThanOrEqualTo("age", filter.startAge).whereLessThanOrEqualTo("age", filter.endAge) 
     query = query.whereGreaterThanOrEqualTo("start_date", filter.startDate).whereLessThanOrEqualTo("end_date", filter.endDate) 
     query = query.whereEqualTo("sex", filter.sex) 
     return query.get() 

スロー例外:java.lang.IllegalArgumentException: All where filters other than whereEqualTo() must be on the same field. But you have filters on 'age' and 'start_date'どのように修正するには?

答えて

2

Official documentation of Firestoreは、異なるフィールドの範囲フィルタはforbiddenであると言います。したがって、Firestoreでは複数のwhere()メソッドを連鎖させて、より特定のクエリを作成することができますが、同じフィールドにしか作成できません。

目的を達成するには、同じクエリで両方のメソッドを使用することができないため、データベースを2回(各フィーダごとに1回)クエリする必要があります。

実世界のアプリケーションでは、ユーザーがデータをクエリするたびに1つの方法で保存することはほとんど不可能ですが、クエリに合った特別なフラグを格納することもできます。

+1

私は同じ答えを書いていましたが、それは異なるフィールドで複数の場所を照会することに制限されています。 –

+0

番号。私はそれを残しました。 –

関連する問題