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

How to get data based on userId from firebase Android kotlin?

我正在尝试根据 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")
            }

        })

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

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

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


下一步不一定是错误,但绝对是您想要进行的优化。现在您将整个 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))
    }
    ...