2017-03-03 14 views
1

私のAndroidアプリケーションでは、2つのFirebaseデータベースクエリオブジェクトの等価性を比較する必要があります。 2つのクエリオブジェクトがデータベース参照とクエリパラメータに基づいて同等であると主張する方法はありますか?Android firebaseクエリの同等性

QueryクラスのJavascript Firebaseバージョンには、目的の動作を生成するisEqual()メソッドがあります。 https://firebase.google.com/docs/reference/js/firebase.database.Query

私は私のAndroidのコードで、次の等価テストを試してみましたが、これは期待される動作を生成しません:

Reference ref = Firebase.getInstance(); 
String child = "childKey"; //this is a valid child of ref 
Query query1 = ref.child(child).limitTo(10); 
Query query2 = ref.child(child).limitTo(10); 
query1 == query2 //false 
query1.equals(query2) //false 
+0

あなたは 'orderByChild(子).equalsTo(何でも)'を試しましたか?または、両方のデータを取得し、両方を完全に取得したときに比較する必要があると思います。 – koceeng

+1

私はQueryオブジェクトに含まれているデータではなく、equalsをアサーションしたいと思います。これを行うことで、私は不自然なネットワークコールを避けることができます。 –

+0

前の質問はあいまいでした。私はそれ以来それを更新しました。 –

答えて

0

これは、私はあなたがしたいとは思わない

query1.zzWM().toString.equals(query2.zzWM().toString) // true 

を動作するようですしかしこれが必要です。私が知っている限り、Firebaseはリファレンスにリスナーがある限り、キャッシュされた結果を保持します。あなたが2を持っていたとしても、それはキャッシュされたバージョンから取得するだけですが、間違っている可能性があります。

+0

ありがとうございます。返される文字列には、データベースパスとクエリパラメータが含まれます。正確に私が探していたもの。ハッキーのアプローチが、それは仕事をします。 私が使用しているFirebase SDKのバージョンのquery.zzVd()。toString()。 –

+0

これは将来、zzWMメソッド名がproguardによって難読化され、すべてのリリースで同じであることが保証されていないため、将来的に破損する可能性があります。 –

関連する問題