使用start和end索引以及单个where

时间:2016-07-10 11:31:26

标签: javascript android firebase firebase-realtime-database

我有这样的Firebase数据库结构:

enter image description here

我想从索引2到5获取语言为英语的记录。

  FirebaseDatabase.getInstance()
 .getReference("data").orderByChild("language").startAt("English").endAt("English");

它提供所有记录而不是语言英语。

应该使用单个where子句以及响应数组的开始和结束索引或长度来检索数据?

2 个答案:

答案 0 :(得分:0)

这是不可能的。 Firebase查询只能对单个属性或密钥具有条件。

我通过将数据结构更改为enter image description here

找到了解决此问题的方法

然后以不同的方式查询不同的语言。

 FirebaseDatabase.getInstance()
 .getReference().child("English").orderByKey().startAt("4").limitToFirst(2);

  FirebaseDatabase.getInstance()
 .getReference().child("Hindi").orderByKey().startAt("2").limitToFirst(3);

答案 1 :(得分:0)

仍然可以使用if条件:

DatabaseReference ref = FirebaseDatabase.getInstance()
   .getReference("data").orderByKey().startAt(2).endAt(5);
ref.addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
         for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) {
            Quote quote = childSnapshot.getValue(Quote.class);
            if(quote.getLanguage().equals("English")){
                //put your code here
            }
         }                  
      }

      @Override
      public void onCancelled(DatabaseError databaseError) {

      }
});