Android 查找订阅服务器的Firebase查询不工作

Android 查找订阅服务器的Firebase查询不工作,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,这就是我的Firebase db的样子 subscriber u36eD7PsOaf6uo0CGuGPBjC3Y223 children: false empty: false id:"u36eD7PsOaf6uo0CGuGPBjC3Y223" name: "JACKSON" smoker:false 我想找到与id=u36ed7psoaf6u0cGugpbjc3y223匹配的记录 下面是我的代码,它无法检索记录 Query recentPostsQuery =

这就是我的Firebase db的样子

subscriber

u36eD7PsOaf6uo0CGuGPBjC3Y223
   children: false
   empty: false
   id:"u36eD7PsOaf6uo0CGuGPBjC3Y223"
   name: "JACKSON"
   smoker:false
我想找到与id=
u36ed7psoaf6u0cGugpbjc3y223
匹配的记录

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

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
count语句正在返回1条记录,这是正确的,但我的查询似乎是错误的,这就是我无法获取记录的原因。

您的查询必须返回
String
值,而不是
Subscriber
的对象,
Subscriber的完整对象存在于节点-u36ed7psoaf6uo0cugpbjy223


您的查询必须返回
字符串
值,而不是
订户的对象
订户的完整对象
存在于节点-U36ED7PSOAF6UO0CGUPBJC3Y223


如果您的Log.e正在打印1,那么它正在查找记录?很可能您的
订户
类与数据结构不匹配。如果您
Log.e(“Key”,postSnapshot.getKey())
在循环中,您应该看到它打印了Key/uid。如果您的Log.e打印了1,那么它正在查找记录?很可能您的
订户
类与数据结构不匹配。如果您
Log.e(“Key”,postSnapshot.getKey())
在循环中,您应该看到它打印了Key/uid。我想检索完整的对象。然后使用mRef.child(“u36ed7psoaf6uo0cugpbjc3y223”);我还想在其他地方使用这个值,那么如何从这个ondatachange方法中获得值。。。我试图在ondata change内部设置一个类变量,但在该函数外部返回null:(您可以使用callbacks,我想检索完整的对象。然后使用mRef.child(“u36ed7psoaf6uoCgugpbjC3y223”);我还想在其他地方使用此值,那么如何从ondatachange方法中获取值……我尝试在ondata change内部设置一个类变量,但在该函数外部返回null:(可以使用回调)
// With return String value which is u36eD7PsOaf6uo0CGuGPBjC3Y223
mRef.orderByChild("id").equalTo("u36eD7PsOaf6uo0CGuGPBjC3Y223");