如何从firebase Android kotlin获取基于userId的数据?

Posted

技术标签:

【中文标题】如何从firebase Android kotlin获取基于userId的数据?【英文标题】:How to get data based on userId from firebase Android kotlin? 【发布时间】:2021-12-26 23:23:10 【问题描述】:

我正在尝试根据 userId 从 firebase 获取数据,当用户登录时,我需要根据其 id 显示他的个人资料详细信息,但我无法获取它。有什么帮助吗?

auth = FirebaseAuth.getInstance()
        databaseRef = FirebaseDatabase.getInstance().getReference("Users/")
        databaseRef.addValueEventListener(object: ValueEventListener
            override fun onDataChange(snapshot: DataSnapshot) 

                //I want first_name and all other details of users
                Log.e("first_name", snapshot.child(uid).getValue(String::class.java))
            

            override fun onCancelled(error: DatabaseError) 
                TODO("Not yet implemented")
            

        )

【问题讨论】:

【参考方案1】:

一个问题是您似乎没有在任何地方初始化uid。所以应该是:

auth = FirebaseAuth.getInstance()
uid = auth.currentUser.uid

另请参阅 getting the current user 上的 Firebase 文档。


Next 不一定是错误,但绝对是您想要做的优化。现在你将整个Users 节点读入你的android 应用程序,然后只从/Users/$uid 中获取一个值。随着您向数据库中添加更多用户,这将无法扩展。

您想要做的是从数据库中为当前用户加载节点:

databaseRef = FirebaseDatabase.getInstance().getReference("Users/")
var userRef = databaseRef.child(uid)
userRef.addValueEventListener(object: ValueEventListener
    override fun onDataChange(snapshot: DataSnapshot) 
        Log.e("first_name", snapshot.getValue(String::class.java))
    
    ...

【讨论】:

以上是关于如何从firebase Android kotlin获取基于userId的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase 检索用户数据 android

如何从android上的firebase获取用户uid?

android RecyclerView pinch zoom,ScaleGestureDetector&GridLayoutManager,with BigImageViewer,kotli

如何从android中的firebase获取对象?

如何从android下载firebase数据库作为CSV文件

如何使用 HashMap 从 Android 的 Firebase 中的子节点获取数据?