获取对子节点firebase的引用

问题描述 投票:0回答:1

我已经开发了一个管理员端应用程序,我将把电子邮件ID,pin,city和country数据添加到firebase实时数据库。然后我将向客户提供电子邮件和密码。所以我的简单目标是当客户登录时,应该在他的应用程序上显示城市和国家的数据。为此,我必须在数据库中搜索该特定客户的节点,这可以通过他在登录期间输入的电子邮件ID来完成。我尽我所能,但每次都返回null。请查看我的代码并帮助我。

void searchQuery(String email){

        DatabaseReference mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
        Query query = mFirebaseDatabaseReference.child("arvi-admin").orderByChild("mailId").equalTo(email);
        query.addValueEventListener(valueEventListener);


    }



    ValueEventListener valueEventListener = new ValueEventListener()
    {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot)
        {

            try {
                DataModel obj = dataSnapshot.getValue(DataModel.class);
                logData(""+obj.getCity());  //the values are null
            }catch (Exception e){
                Log.d("@@","Error");
                e.printStackTrace();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError){


        }
    };

Firebase Database Image

android firebase
1个回答
0
投票

要解决此问题,请更改以下代码行:

Query query = mFirebaseDatabaseReference.child("arvi-admin").orderByChild("mailId").equalTo(email);

Query query = mFirebaseDatabaseReference.orderByChild("mailId").equalTo(email);

正如你所看到的,我已经删除了对.child("arvi-admin")的调用,因为root不是一个孩子,不应该在你的引用中添加。

编辑:

Query query = mFirebaseDatabaseReference.orderByChild("mailId").equalTo(email);
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            DataModel obj = ds.getValue(DataModel.class);
            Log.d(TAG, obj.getCity());
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);
© www.soinside.com 2019 - 2024. All rights reserved.