简体   繁体   English

没有从Android中的Firebase获取子数据

[英]Not getting Child Data back from Firebase in android

Here is the following structure of database in firebase 这是firebase中数据库的以下结构

Code

I am getting the current user and then checking the whether the id is null or not and get reference of child and getting key of child. 我正在获取当前用户,然后检查id是否为null并获取child的引用并获取child的键。 Further more i am getting null in string variable where i tried to get values. 此外,我在尝试获取值的字符串变量中获取了null。

private void Check_data() {
    final FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    if (user.getUid() != null) {
        FirebaseDatabase database = FirebaseDatabase.getInstance();
        DatabaseReference myRef = database.getReference("user_info");
        DatabaseReference myRef1=myRef.child(user.getUid());
        myRef1.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                //GenericTypeIndicator<Map<String, String>> genericTypeIndicator = new GenericTypeIndicator<Map<String, String>>() {};
                   // Map<String, String> map = dataSnapshot.getValue(genericTypeIndicator);
                    String name = dataSnapshot.child("name").getValue(String.class);
                    String email = dataSnapshot.child("email").getValue(String.class);


                        Name.setText(name);
                        email_txt.setText(email);


               /* if (image != null) {
                    Glide.with(MainActivity.this)
                            .load(image)
                            .centerCrop()
                            .into(photo_url);

                }*/

                }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }
}

In your database, you have random ids that are generated using push() 在数据库中,您具有使用push()生成的随机ID

You should first when adding data to the database use the userid : 在将数据添加到数据库时,应首先使用userid

FirebaseUser user=FirebaseAuth.getInstance().getCurrentUser();
String userid=user.getUid();

the userid is unique for each user. userid对于每个用户都是唯一的。

then to retrieve the data inside the userid : 然后在userid内检索数据:

 DatabaseReference myRef = database.getReference("user_info");
 DatabaseReference myRef1=myRef.child(userid);
 myRef1.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
                String name = dataSnapshot.child("name").getValue(String.class);
                String email = dataSnapshot.child("email").getValue(String.class)
  }
});

When the id has - at the beginning it means its a random id. 如果ID具有-开头,则表示其为随机ID。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM