2016-12-27 30 views
1

这就是我的Firebase数据库的外观。Firebase查询找到订户不起作用

subscriber 

u36eD7PsOaf6uo0CGuGPBjC3Y223 
    children: false 
    empty: false 
    id:"u36eD7PsOaf6uo0CGuGPBjC3Y223" 
    name: "JACKSON" 
    smoker:false 

我想查找匹配id = u36eD7PsOaf6uo0CGuGPBjC3Y223的记录。

下面是我的代码和它无法检索记录

Query recentPostsQuery = mRef.orderByChild("id").equalTo("u36eD7PsOaf6uo0CGuGPBjC3Y223"); 
     recentPostsQuery.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       Log.e("Count ", "" + dataSnapshot.getChildrenCount()); 
       for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) { 
        subscriber = postSnapshot.getValue(Subscriber.class); 
       } 
      } 

      @Override 
      public void onCancelled(FirebaseError firebaseError) { 

      } 
     }); 

Log.e计数语句返回1个记录下哪些是正确的,但看起来像我的查询是错误的,这就是为什么我不能取记录。

+0

如果你Log.e被打印出1,则找到记录? – Blundell

+0

很可能您的Subscriber类与数据结构不匹配。如果你在循环内部使用'Log.e(“Key”,postSnapshot.getKey())',你应该看到它打印了键/ uid。 –

回答

0

您的查询必须返回String值不是一个Subscriber对象的Subscriber完整的对象exsist节点 - u36eD7PsOaf6uo0CGuGPBjC3Y223

// With return String value which is u36eD7PsOaf6uo0CGuGPBjC3Y223 
mRef.orderByChild("id").equalTo("u36eD7PsOaf6uo0CGuGPBjC3Y223"); 
+0

我想检索完整的对象。 – user7327850

+0

然后使用mRef.child(“u36eD7PsOaf6uo0CGuGPBjC3Y223”); – Rahul

+0

另外我想在其他地方使用这个值,所以我怎么会得到这个ondatachange方法的价值...我试图设置一个类变量内部ondata变化,但外面这个函数多数民众赞成返回null :( – user7327850