【问题标题】:whats wrong with this code in firebase and androidfirebase 和 android 中的这段代码有什么问题
【发布时间】:2017-06-29 10:25:25
【问题描述】:
 usersRef= myRef.child("users");
        usersRef.orderByChild("name").equalTo("yair").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                User user=new User();
                user.setName(dataSnapshot.getValue(User.class).getName());
                user.setEmail(dataSnapshot.getValue(User.class).getEmail());
                user.setId(dataSnapshot.getValue(User.class).getId());
                user.setPhone_num(dataSnapshot.getValue(User.class).getPhone_num());

我的火力基地是这样的:

users
 Y6NKciGllTgkLXlMj9YLlAFuw522
 email: 
"yk.yair@gmail.com"
 id: 
"Y6NKciGllTgkLXlMj9YLlAFuw522"
 name: 
"yair"
 phone_num: 
"050-7777151"
 kfby10Wy16Rx12v7Mx0sksqUTE72
 email: 
"aaa"
 id: 
"kfby10Wy16Rx12v7Mx0sksqUTE72"
 name: 
"aaa"
 phone_num: 
"(050)7777151"

似乎用户总是保持为空; 谁能帮忙?

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    要解决这个问题,请使用以下代码:

    DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference usersRef = rootRef.child("users");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                String email = ds.child("email").getValue(String.class);
                User user = new User();
                user.setEmail(email);
                //and so on
                Log.d("TAG", email);
            }
        }
    
        @Override
        public void onCancelled(DatabaseError databaseError) {}
    };
    usersRef.addListenerForSingleValueEvent(eventListener);
    

    你的输出将是:

    yk.yair@gmail.com
    

    另一种方法是更改​​ DatabaseReference 并使用相同的代码,如下所示:

    DatabaseReference usersRef = rootRef.child("users").child(userId);
    

    其中userIdpush()方法生成的唯一id。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      试试这个:

      mFirebaseDatabase = FirebaseDatabase.getInstance();
      mFirebaseDatabase.getReference().child("users").orderByChild("name").equalTo("yair").addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {
                  if (dataSnapshot.getValue() == null){
                      Log.i("IS NULL", "IS NULL");
                  } else{
                      User user = dataSnapshot.getValue(User.class);
                      Log.i("user name", user.getName());
                  }
              }
              @Override
              public void onCancelled(DatabaseError databaseError) {
              }
          });
      

      并确保您的数据库结构如下: enter image description here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-25
        • 2018-09-09
        相关资源
        最近更新 更多