实时数据库 Firebase

Posted

技术标签:

【中文标题】实时数据库 Firebase【英文标题】:Real time database firebase 【发布时间】:2021-07-01 10:38:33 【问题描述】:

我的 android 应用程序的 Firebase 实时数据库存在一些问题,因为我看不到任何数据。我不知道为什么,我也改变了规则。 我的 Android 项目中有三个类:LogIn、SignUp(用于注册)和 Profile。当我在 SignUp 类中写“name”、“username”、“lastname”、“email”和“password”时,我可以在 Profile 中看到“name”、“lastname”和“username”,但在实时数据库。 这里有部分代码:

注册: 变量声明:

 private lateinit var dbReference: DatabaseReference
    private lateinit var firebaseDatabase: FirebaseDatabase

然后.....

   rebaseDatabase = FirebaseDatabase.getInstance()
            dbReference = firebaseDatabase.getReference("users")
            dbReference.setValue("First users")
    
     val currentDb = dbReference.child((currentUser?.uid!!))
                            currentDb.child("name").setValue(name)
                            currentDb.child("lastname").setValue(lastName)
                            currentDb.child("user").setValue(user)
                            currentDb.child("email").setValue(email)
                            currentDb.child("pass").setValue(pass)

个人资料类: 数据库 = FirebaseDatabase.getInstance() databaseReference = database?.reference!!.child("users")

   override fun onDataChange(snapshot: DataSnapshot) 
       val usernameText = findViewById<TextView>(R.id.usernameText)
                        val nameText = findViewById<TextView>(R.id.nameText)
                        val lastnameText = findViewById<TextView>(R.id.lastnameText)
                        usernameText.text =  snapshot.child("user").value?.toString()
                        nameText.text=  snapshot.child("name").value?.toString()
                        lastnameText.text=  snapshot.child("lastname").value?.toString()
            

[在此处输入图片描述][1] [1]:https://i.stack.imgur.com/liW2z.jpg

【问题讨论】:

【参考方案1】:

你可以在你的注册中试试这个吗:

private lateinit var dbReference: DatabaseReference
dbReference = Firebase.database.reference;
dbReference.child("users").setValue("First users")

而不是

private lateinit var dbReference: DatabaseReference
private lateinit var firebaseDatabase: FirebaseDatabase.getInstance()
dbReference = firebaseDatabase.getReference("users")
dbReference.setValue("First users")

您可能混淆了 java 和 kotlin 代码。如页面https://firebase.google.com/docs/database/android/read-and-write所示




更新:

我想补充一点。起初我没有看到这个,但它似乎很重要,并在页面https://firebase.google.com/docs/database/android/read-and-write中提到

你可以试试这个

dbReference = Firebase.database("https://soundbliss-8ba73-default-rtdb.europe-west1.firebasedatabase.app").reference;

而不是

dbReference = Firebase.database.reference;

如果这不起作用,找出你的 firebase 项目的数据库 url,然后像这样将它作为参数传递给数据库函数

dbReference = Firebase.database("database url of ur app").reference;

【讨论】:

谢谢。我更正了这部分,但它不起作用。我没有看到任何数据。不知道是不是问题,但是代码里有另一个数据库的名字而不是Firebase,因为位置不一样。

以上是关于实时数据库 Firebase的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 Firebase 实时数据库转移到 Firebase Cloud Firestore

Firebase 实时数据库文件大小

我们可以将数据插入 Firebase 实时数据库吗?

来自 firebase 实时数据库的重复数据

使用 Firebase 实时数据库 Flutter 进行实时更新

实时数据库 Firebase