Firebase查询以获取2个条目匹配的密钥

时间:2017-07-12 16:28:03

标签: android firebase firebase-realtime-database querying

有人可以解释一下如何编写查询以通过查询数字和时间来获取正确的键值。 我的数据库中的数字通常是相同的,但从来没有数字和时间相同。

   "key1": {
    "number": "123456789",
    "test": "testing",
    "time": 1499175554444
},
   "key2": {
    "number": "123456789",
    "test": "testing",
    "time": 1499175551923
}

number是一个字符串,时间很长。

以下是我一直在尝试的内容:

Query query = ref.child("test")
.child("test2").child("test3").orderByChild("number")
.equalTo("123456789");
query.addListenerForSingleValueEvent(new ValueEventListener() {

    @Override                                  
    public void onDataChange(DataSnapshot dataSnapshot) {                                      
     for (DataSnapshot appleSnapshot: dataSnapshot.getChildren() ) {                                                
        String key = appleSnapshot.getKey();

        Toast.makeText(getContext(), key, Toast.LENGTH_SHORT).show();}           
 return;
 }

这总是给我key1。

如何将time参数添加到查询中,以便只获取与时间和数字匹配的密钥?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

试试这个。

Query query = ref.child("test")
.child("test2")
.child("test3")
.orderByChild("number")
.equalTo("123456789");
query.addListenerForSingleValueEvent(new ValueEventListener() {

@Override                                  
public void onDataChange(DataSnapshot dataSnapshot) {                                      
 for (DataSnapshot appleSnapshot: dataSnapshot.getChildren() ) {                                                
    Key key = appleSnapshot.getValue(Key.class);
    Long time1 = 1499175554444;
    Long time2 = key.getTime();
    if (time2 == time1 ) {
       String key = appleSnapshot.getKey();
       Toast.makeText(getContext(), key, Toast.LENGTH_SHORT).show();

    }   
    }           

}