簡體   English   中英

Android Firebase合並多個查詢

[英]Android Firebase Merging multiple queries

我在firebase上有這張桌子;

{
"car1" : {
"carId" : "123asd45",
"carImageUrl" : "url",
"carName" : "Champion"
},
"car2" : {
"carId" : "123aa456",
"carImageUrl" : "url",
"carName" : "Super"
},
"car3" : {
"carId" : "1234ew5",
"carImageUrl" : "url",
"carName" : "A"
}
}

我正在使用firebase ui適配器之類的;

 Query query = FirebaseDatabase.getInstance()
                   .getReference()
                   .child("carmodels")
                   .orderByChild("carName")
                   .equalTo(MYFILTER1)
                   .limitToLast(30);
  FirebaseRecyclerOptions<Car> options =
            new FirebaseRecyclerOptions.Builder<Car>()
                    .setQuery(query, Car.class)
                    .build();

上面的代碼可以正常工作,但是我想做的是; 用多個字符串過濾;

 Query query = FirebaseDatabase.getInstance()
                   .getReference()
                   .child("carmodels")
                   .orderByChild("carName")
                   .equalTo(MYFILTER1)
                   .limitToLast(30);
 Query query2 = FirebaseDatabase.getInstance()
                   .getReference()
                   .child("carmodels")
                   .orderByChild("carName")
                   .equalTo(MYFILTER2)
                   .limitToLast(30);

然后合並它們的查詢結果並將其提供給選項;

FirebaseRecyclerOptions<Car> options =
        new FirebaseRecyclerOptions.Builder<Car>()
                .setQuery(MERGEDQuery, Car.class)
                .build();

那有可能這樣嗎? 還是您為此建議其他解決方案? 謝謝

編輯:

我有很多過濾器,因此在Firebase上使用另一個子對象,例如“ filters”:“ filter1_filter2_filter3 ..”可能會出現問題。

您可以在這里通過在數據結構的單個屬性上組合過濾鍵來進行忍者移動。

{ "car1" : { "carId" : "123asd45", "carImageUrl" : "url", "carName" : "Champion", "filters" : "MYFILTER1_MYFILTER2" }, "car2" : { "carId" : "123aa456", "carImageUrl" : "url", "carName" : "Super", "filters" : "MYFILTER1_MYFILTER2" }, "car3" : { "carId" : "1234ew5", "carImageUrl" : "url", "carName" : "A", "filters" : "MYFILTER1_MYFILTER2" } }

然后在您的查詢:

 Query query2 = FirebaseDatabase.getInstance()
               .getReference()
               .child("carmodels")
               .orderByChild("carName")
               .equalTo(MYFILTER1_MYFILTER2)
               .limitToLast(30);

對於誰需要該問題的解決方案,我解決了此問題,以在我的recycleview適配器中過濾項目。 過濾后的項目在recycleview上可見,其他現在不可見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM