是否有可能只显示android firebase上特定用户ID的数据?

时间:2018-02-20 14:11:46

标签: java android firebase firebase-realtime-database

我的计划是为用户创建用户界面,用户可以在应用程序注册并登录时查看自己的信息。

示例:当用户A在应用程序上注册时,信息会自动输入firebase数据库,然后他们只登录自己的信息(例如姓名,电子邮件,日期)将显示。

User

从上图中可以看出textview将被他们在数据库中的特定数据所取代。

这是我的firebase数据库 User firebase

当用户在应用程序上注册时,会直接从firebase auth users-uid中获取用户的唯一ID。

enter image description here

2 个答案:

答案 0 :(得分:2)

是的,如果你的数据库中有这个,那就可以了:

users
 useruid 
  name: peter
  gender: male

然后在android中你可以这样做:

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

以上将从数据库中检索useruid,然后您可以进行查询:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("user").child(useruid);

并且只有该用户的数据才会出现在活动中..

答案 1 :(得分:0)

经过身份验证后,首先必须获取当前用户的Uid。

String currentUid = FirebaseAuth.getInstance().getCurrentUser().getUid();

如果该Uid存在于Firebase数据库中,它将获取其子数据,并且只会在活动中显示该用户数据。

DatabaseReference uDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users");

uDatabaseReference.child(currentUid).addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        u_name = dataSnapshot.child("name").getValue().toString();
        u_phone = dataSnapshot.child("email").getValue().toString();
        u_date= dataSnapshot.child("date").getValue().toString();
        u_type= dataSnapshot.child("type").getValue().toString();
        Toast.makeText(ProfileActivity.this, "name: "+ u_name + "\nemail: "+ u_email + "\ndate: " + u_date + "\ntype: " + u_type, Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {

    }
});