我似乎不能只是从 firebase 数据库中引用用户 ID 下的孩子

Posted

技术标签:

【中文标题】我似乎不能只是从 firebase 数据库中引用用户 ID 下的孩子【英文标题】:I cannot just seem to reference the child under User ID from firebase database 【发布时间】:2019-03-17 16:47:40 【问题描述】:

我已经尝试了所有方法来引用子项(用户名),生成的 UID 用于在 Firebase 数据库的文本视图中显示字符串值,但它不会只是显示出来

数据库:

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("uid").child("username");
    mDatabaseReference.addValueEventListener(new ValueEventListener() 
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) 
            if (dataSnapshot.exists()) 
                String username = Objects.requireNonNull(dataSnapshot.getValue()).toString();
                mName.setText(("username" + username ));
             else 
                mName.setText(null);
            
        
        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) 

        
    );

文本视图:

总是跑到 else 部分,我做错了什么?

【问题讨论】:

【参考方案1】:

您在代码中引用的子项在数据库中不存在,这就是为什么它总是转到 else 部分。

DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child("uid").child("username");

在您的数据库中,您没有名为uid 的子节点,在节点Users 下您有不同的用户ID,因此您需要执行以下操作:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String userId     = user.getUid();
DatabaseReference mDatabaseReference = FirebaseDatabase.getInstance().getReference().child("Users").child(userId).child("username");

这将检索当前登录用户的 id,您将能够检索Username

【讨论】:

以上是关于我似乎不能只是从 firebase 数据库中引用用户 ID 下的孩子的主要内容,如果未能解决你的问题,请参考以下文章

markdown 步骤只是从firebase托管页面复制,但在markdown中跟随文本编辑器

Firebase 引用对象不会保存到 SwiftUI 中的变量

我可以仅使用根引用删除带有句柄的 Firebase 观察者吗?

Vuex 状态与 Firebase 同步

如何访问 Firebase 实时数据库中子节点的父节点?

Firebase 云函数 - 对象不能用 JSON 编码 - Kotlin 数据类