2017-09-28 25 views
0

我想通过用户的唯一ID查询事件,但它不会返回任何东西。这里是我的查询代码:Android的FIrebase-按价值查询不起作用

Query events = mDatabaseEvents.orderByValue().equalTo("user1"); 

,这里是我的火力地堡的数据库结构:

events: { 
    -event1: { 
    1: user1, 
    2: user2, 
    3: user3, 
}, 
    -event2: { 
    1: user4, 
    2: user5, 
    3: user1, 
}, 

我认为这是不工作,因为数据是通过一个HashMap设定,因此“用户1”未必是总是在每个事件的同一个地方。我该如何解决这个问题?谢谢

+0

请分享您的代码,你试过到目前为止,并发表您的火力数据库结构体。 –

+0

您当前的代码实际上并没有对Firebase数据库执行任何操作。它仅仅定义了一个查询。如果您想要从数据库中检索匹配的项目,则必须[附加侦听器](https://firebase.google.com/docs/database/android/lists-of-data#child-events)。 –

回答

0

您需要添加一个“addValueEventListener”来实际获取数据。这里是“orderByKey”的一个例子,会有一点变化我想:

Query query = locationComment.orderByKey(); 
query.addValueEventListener(new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     if (dataSnapshot.getValue() == null) { 
      return; 
     } 
     data.clear(); 
     for (DataSnapshot child : dataSnapshot.getChildren()) { 
      ... 
     } 
     adapter.notifyDataSetChanged(); 
    } 

您可以在这里看到更多的信息:https://stackoverflow.com/a/42430304/5309996

+0

我正在使用FirebaseRecyclerAdapter的查询。我会怎么做呢? – Spotz