首页 > 解决方案 > 无法在 firebase 数据库中插入数据

问题描述

我是 android 开发的新手,我可以从 firebase 数据库读取数据,但我无法将新数据插入到我的 firebase 数据库中。我还检查了 Firebase 规则。我已经正确添加了依赖项。也就是说 implementation 'com.google.firebase:firebase-database:19.1.0',请让我知道我错在哪里,我检查了很多示例,但不知道为什么我的代码不起作用

import androidx.appcompat.app.AppCompatActivity;

import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.DatabaseReference;

public class Register extends AppCompatActivity {

        private FirebaseDatabase fbase;
        private DatabaseReference mref;
        private Button registerbtn;
        private EditText emailtext;
        private EditText password;
        private EditText cpassword;

    @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);
        getSupportActionBar().setTitle("Sign Up");
        fbase = FirebaseDatabase.getInstance();
         mref = fbase.getReference(path: "users");

            emailtext =  findViewById(R.id.email);
            password  =  findViewById(R.id.password);
            cpassword =    findViewById(R.id.cpassword);
            registerbtn = findViewById(R.id.button);
            registerbtn.setOnClickListener(new View.OnClickListener() {
             @Override
                public void onClick(View v) {
                RegisterUser();
          }
          });



    }

    private void RegisterUser()
     {

    String emailid = emailtext.getText().toString();
        String Password = password.getText().toString();
        String CPass    = cpassword.getText().toString();
        String Keys =  mref.push().getKey();

        mref.child(Keys).child("emailid").setValue(emailid);
        mref.child(Keys).child("password").setValue(Password);
 }

标签: androidfirebasefirebase-realtime-database

解决方案


实际上,您的 firebase 数据库可能期望和用户类的对象,具有属性(emailId、password、confirmPassword)。但是您要做的只是将每个字符串作为用户对象插入,这是行不通的。你应该尝试做:

String tableName = "whatever table name you are using"; //probably users
User user = new User();
user.setEmail(emailid);
user.setPassword(Password);
user.setConfirmPassword(CPass);
mref.child(tableName).child(Keys).setValue(user);

为什么要在 getReference() 方法中传递路径参数?


推荐阅读