【问题标题】:Querying in Firebase with equalTo condition not working在 Firebase 中使用 equalTo 条件进行查询不起作用
【发布时间】:2016-10-14 13:19:35
【问题描述】:

我在 Firebase 中有这样的数据库结构

我想根据键 number 搜索此结构的搜索并获取父键作为回报。这意味着如果我搜索 8860124421 那么我应该得到 -KTEtSR7chN8te1WaW-W 作为回报。

我在 android 中是这样做的 -

final String number = "8860124421";

DatabaseReference global_user_entry_ref = ApplicationContext.getGlobalDataBaseReference()
                .child("User-Entry-2").getRef();  //Reference to User-Entry-2 

Query query = global_user_entry_ref.orderByChild("number").equalTo(number);  

            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    if(dataSnapshot != null){

                        for(DataSnapshot friend: dataSnapshot.getChildren()){

                            String firebase_id = (String) friend.getKey();

                            Log.d("ContactSync","handle number "+firebase_id+" "+number+" "+friend);
                        }

                        Log.d("ContactSync","handle number outer "+dataSnapshot);
                        //user exist
                    }
                    else {
                        //user_does_not_exist
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.d("ContactSync","handle number oncancel "+databaseError.getMessage());
                }
            });

但我没有得到正确的结果,onDataChange 中的 dataSanpshot 看起来像这样 -

DataSnapshot { key = User-Entry-2, value = null }

但我想用数字键的父级获取 dataSnapShot。

请帮忙,提前谢谢

【问题讨论】:

  • 您传入的number 变量是否定义为数字?还是字符串?
  • @FrankvanPuffelen...数字被定义为字符串
  • 你的问题为什么说“9758210790”?
  • 这意味着您正在将代码中的数字与数据库中的字符串进行比较,该字符串不匹配。试试final long number = 8860124421;
  • @cricket_007..对不起我的错误,感谢您指出

标签: android firebase firebase-realtime-database


【解决方案1】:

正如@Frank van Puffelen 在 cmets 中所说,问题是我将代码中的数字与数据库中的字符串进行比较,结果不匹配,因此解决方案是更改

final String number = "8860124421"; 

final long number = 8860124421;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    相关资源
    最近更新 更多