当前位置: 首页 > 知识库问答 >
问题:

Firebase实时数据库值检索

钱德元
2023-03-14

public class User {
    String userName, mobile;
    List<Object> groupIds;
    public User(String userName, String mobile) {
        this.userName = userName;
        this.mobile = mobile;
        groupIds = new ArrayList<>();
        groupIds.add("group1");
    }
    public User() {}

    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public List<Object> getGroupIds() {
        return groupIds;
    }
    public void setGroupIds(List<Object> groupIds) {
        this.groupIds = groupIds;
    }
}

在身份验证成功时,我正在编写以下代码:

   mDatabase.addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    showData(dataSnapshot);
                                }
                                @Override
                                public void onCancelled(@NonNull DatabaseError databaseError) {
                                }
                            });
private void showData(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()){
            User uInfo = new User();
            uInfo.setUserName(ds.child("Users").child("112233").getValue(User.class).getUserName());
            uInfo.setMobile(ds.child("Users").child("112233").getValue(User.class).getMobile());
            Log.d(TAG, "showData: name: " + uInfo.getMobile());
            Log.d(TAG, "showData: email: " + uInfo.getUserName());           
        }
    }

共有1个答案

黎腾
2023-03-14

既然您使用的是Firebase身份验证,那么您可以执行以下操作:

首先在if(task.issusccessful()){code>中,执行以下操作:

boolean isNew = task.getResult().getAdditionalUserInfo().isNewUser();

如果isNew返回true,则用户是第一次登录,您可以导航到配置文件活动

如果您希望用户导航到仪表板活动,那么您可以检查用户是否为空:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

如果user不等于null,则导航到仪表板活动,否则导航到登录页面。

FirebaseAuth。getInstance()。如果调用FirebaseAuth,getCurrentUser()将返回null。getInstance()。注销() 这意味着如果您不注销,那么它将始终不等于null,因此您将能够导航到仪表板活动。

查看以下内容以获取更多信息:

https://firebase.google.com/docs/auth/android/manage-users

https://firebase.google.com/docs/reference/android/com/google/firebase/auth/AdditionalUserInfo

 类似资料:
  • 我对Firebase和Android是新手。我已经在我的Firebase帐户中存储了用户身份验证详细信息(姓名、个人资料图像而不是电子邮件ID)。我想检索那些数据(如姓名等)到我的应用程序的其他部分。如何检索实时数据库子值?

  • 我试图显示一个零件的"loc",如果它的零件号我给。以下是数据结构的样子: 活动代码: getLoc是Product类的getter函数,它返回给定curP对应的“loc”。curP部分表示子值。 逻辑对我来说似乎是正确的,但我没有得到输出。我哪里出了问题?

  • firebase数据库最近的更新似乎有一些变化。我的项目在firebase\u数据库:^7.0.0版本下运行良好,但在firebase数据库的更新版本中,我无法更新项目代码。 以下是v7的工作版本 firebase\u数据库^9.0.12上的同一代码出现错误。我收到的错误在`(DataSnapShot snap)async{…}上错误是 无法将参数类型“Future Function(DataSn

  • 我是Android开发的新手,我正在从firebase Realtime数据库中检索所有的子节点,这些节点的约会状态为“已完成”,并且子节点具有当前用户id,但当我移到历史记录时,它没有显示任何内容。有人能帮我解决这个问题吗。我需要尽快解决问题。 Firebase数据库模型

  • 问题内容: 我目前正在学习Firebase和iOS的知识,因此请耐心等待。我当前正在发布到我的表,如下所示: 我正在尝试检索插入新记录时创建的内容,但是无法检索它。我已经尝试过( 但是由于浏览网页而无法找到一个可靠的解决方案,所以这是一个随机的猜测 )。有任何想法吗? 问题答案: 注意 :-Althogh 是自以来的一项强大功能,但是当您想创建具有唯一键的节点时更喜欢将数据存储到其中。我之所以喜欢