【问题标题】:Is it possible to show only the data on the specific user id on android firebase?是否可以仅在 android firebase 上显示特定用户 ID 的数据?
【发布时间】:2019-10-31 17:46:20
【问题描述】:

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

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

从上图中,textview 将被它们在数据库中的特定数据替换。

这是我的 firebase 数据库

用户在应用上注册时的唯一 id 直接从 firebase auth users-uid 获取。

【问题讨论】:

标签: java android firebase firebase-realtime-database


【解决方案1】:

是的,如果你的数据库中有这个是可能的:

users
 useruid 
  name: peter
  gender: male

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

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

上面会从数据库中检索用户uid,然后你可以做一个查询:

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

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

【讨论】:

【解决方案2】:

认证后,首先要获取当前用户的 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) {

    }
});

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多