Firebase数据库未存储数据,logcat没有显示错误

时间:2018-08-12 20:48:06

标签: android firebase firebase-realtime-database kotlin

我正在学习Kotlin,并尝试在用户登录应用程序时将用户的电子邮件和UID保存在Firebase数据库中,但是数据没有存储在数据库中,并且logcat没有显示错误,因此我无法弄清楚是什么问题。

P.S。 -我已将Firebase数据库规则设置为

{
"rules": {
".read": true,
".write": true
}
}

这是login.kt文件代码

package com.revorg.tictactoe

import android.content.Intent
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.auth.FirebaseUser
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.activity_login.*

class Login : AppCompatActivity() {

var mFirebaseAuth: FirebaseAuth?=null

var database = FirebaseDatabase.getInstance()
var myRef=database.reference

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_login)

    mFirebaseAuth= FirebaseAuth.getInstance()
}

fun buLoginEvent(view:View){

    LoginToFirebase(etEmail.text.toString(),etPassword.text.toString())
}

fun LoginToFirebase(email:String,password:String){

    mFirebaseAuth!!.createUserWithEmailAndPassword(email,password)
            .addOnCompleteListener(this) {task ->

                if(task.isSuccessful){
                    Toast.makeText(applicationContext,"Login Successful",Toast.LENGTH_SHORT).show()
                    var currentuser = mFirebaseAuth!!.currentUser
                    //save to Database
                    if(currentuser!=null) {
                        myRef.child("Users").child(splitString(currentuser.email.toString())).child(currentuser.uid)
                    }

                    LoadMain()

                } else {
                    Toast.makeText(applicationContext,"Login Failed", Toast.LENGTH_SHORT).show()
                }
            }

}

override fun onStart() {
    super.onStart()

    LoadMain()
}

fun LoadMain(){

    var currentuser = mFirebaseAuth!!.currentUser

    if(currentuser!=null) {


        var intent = Intent(this, MainActivity::class.java)
        intent.putExtra("email", currentuser.email)
        intent.putExtra("uid", currentuser.uid)

        startActivity(intent)
    }
}

fun splitString(str:String):String{

    var split = str.split("@")
    return split[0]
}
}

1 个答案:

答案 0 :(得分:3)

什么都没有存储,因为您没有存储任何东西,因此需要使用setValue()来存储数据。 { "name": "bookapi", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.16.3", "gulp": "^3.9.1", "gulp-nodemon": "^2.2.1", "mongoose": "^5.2.7" } } 获得对数据库中某个位置的引用。

您应该这样做:

child()

那么您将拥有此数据库:

myRef.child("Users").child(currentuser.uid).child("email").setValue(email);