无法将数据写入数据库Firebase Firestore

随机

我设法将数据插入到身份验证,但无法插入数据库:

代码

fullname = findViewById(R.id.Ifullname);
        password = findViewById(R.id.Ipassword);
        email = findViewById(R.id.Iemail);
        RegisterBtn = findViewById(R.id.button);
        fAuth = FirebaseAuth.getInstance();
        fStore = FirebaseFirestore.getInstance();
        loginBtn = findViewById(R.id.LoginBtn);
RegisterBtn.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v){
                String FullName = fullname.getText().toString().trim();
                String Password = password.getText().toString().trim();
                String Email = email.getText().toString().trim();
fAuth.createUserWithEmailAndPassword(Email, Password).addOnCompleteListener(new OnCompleteListener<AuthResult>(){
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task){
                        if(task.isSuccessful()){
                            Toast.makeText(Register.this, "User Created.", Toast.LENGTH_SHORT).show();
                            UserID = fAuth.getCurrentUser().getUid();
                            DocumentReference documentReference = fStore.collection("users").document(UserID);
                            Map<String,Object> user = new HashMap<>();
                            user.put("FName", fullname);
                            user.put("Email",email);
                            user.put("Password",password);
//problem seems to be this line  
documentReference.set(user).addOnSuccessListener(new OnSuccessListener<Void>() {
                                @Override
                                public void onSuccess(Void aVoid) {
                                    Log.d(TAG, "onSuccess: user Profile is created");
                                }

                            }).addOnFailureListener(new OnFailureListener() {
                                @Override
                                public void onFailure(@NonNull Exception e) {
                                    Log.d(TAG, "onFailure:"+e.toString());

                                }
                            });

错误

E / AndroidRuntime:致命例外:主进程:com.example.budgetingapp,PID:11507 java.lang.RuntimeException:在com.google.firebase.firestore.util上的类androidx.appcompat.widget.AppCompatEditText上找到名称getText冲突的吸气剂.CustomClassMapper $ BeanMapper。(com.google.firebase:firebase-firestore @@ 21.4.1:629)位于com.google.firebase.firestore.util.CustomClassMapper.loadOrCreateBeanMapperForClass(com.google.firebase:firebase-firestore @@ 21.4 .1:377),访问com.google.firebase.firestore.util.CustomClassMapper的com.google.firebase.firestore.util.CustomClassMapper.serialize(com.google.firebase:firebase-firestore @@ 21.4.1:177)。在com.google.firebase.firestore.util.CustomClassMapper.serialize(com.google.firebase:firebase-firestore @@ 21.4.1:104处序列化(com.google.firebase:firebase-firestore @@ 21.4.1:140) ),网址为com.google.firebase.firestore。util.CustomClassMapper.convertToPlainJavaTypes(com.google.firebase:firebase-firestore @@ 21.4.1:78)位于com.google.firebase.firestore.UserDataReader.convertAndParseDocumentData(com.google.firebase:firebase-firestore @@ 21.4.1 :231),网址为com.google.firebase.firestore.DocumentReference.set(com.google.com)上的com.google.firebase.firestore.UserDataReader.parseSetData(com.google.firebase:firebase-firestore @@ 21.4.1:75)。 firebase:firebase-firestore @@ 21.4.1:166)com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore @@ 21.4.1:146)在com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore @@ 21.4.1:166)上访问com.google.firebase.firestore的firebase-firestore @@ 21.4.1:75)。 DocumentReference.set(com.google.firebase:firebase-firestore @@ 21.4.1:146)在com.google.firebase.firestore.DocumentReference.set(com.google.firebase:firebase-firestore @@ 21.4.1:166)上访问com.google.firebase.firestore的firebase-firestore @@ 21.4.1:75)。 DocumentReference.set(com.google.firebase:firebase-firestore @@ 21.4.1:146)在com.example.budgetingapp.Register $ 1 $ 1.onComplete(Register.java:95)在com.google.android.gms.tasks.zzj.run(未知来源:4)在android.os.Handler.handleCallback(Handler。的android.os.Handler.dispatchMessage(Handler.java:99)的java:873),android.app.ActivityThread.main(ActivityThread.java:6669)的android.os.Looper.loop(Looper.java:193)的com.android.internal.os.RuntimeInit $ MethodAndArgsCaller.run(RuntimeInit.java:493)上com.android.internal.os.ZygoteInit.main(ZygoteInit.java)上的java.lang.reflect.Method.invoke(本机方法) :858)

samthecodingman

简而言之,您尝试将TextField本身添加到数据库中,而不是添加到创建的字符串中。

String FullName = fullname.getText().toString().trim();
String Password = password.getText().toString().trim();
String Email = email.getText().toString().trim();
/* ... */
user.put("FName", fullname);
user.put("Email",email);
user.put("Password",password);

我建议采用一些命名约定来防止这种情况。我个人建议<short-object-type><variable-name>用编写camelCase

Button     #button   -> #btnRegister
Button     #LoginBtn -> #btnLogin
TextField  #fullname -> #txtFullName
TextField  #email    -> #txtEmail
TextField  #password -> #txtPwd

有时,将私有对象级变量与局部变量区分开来也很有用,通常是通过m在名称的开头添加(对我来说):

mBtnRegister.setOnClickListener(...);
Button btnScripted = new Button(...);

您应该以camelCase(或UPPER_SNAKE_CASE为常量)命名变量,而不是以in命名PascalCase这样它们就不会被误识别为类,接口等。实际上,通过查看StackOverflow代码块的语法高亮显示,实际上可以看到这一点。


String fullname = txtFullName.getText().toString().trim();
String password = txtPwd.getText().toString().trim();
String email = txtEmail.getText().toString().trim();
/* ... */
user.put("fname", fullname);
user.put("email", email);
// do not store passwords!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用dialogflow将多个参数写入firestore数据库

来自分类Dev

Firebase 云功能;无法访问 Firestore 数据库

来自分类Dev

将Firebase实时数据库数据存储在Firestore中?

来自分类Dev

无法将数据从表单发送到Firestore数据库

来自分类Dev

无法从Firestore数据库中获取数据

来自分类Dev

Firestore导入数据库

来自分类Dev

使用Firebase注册后无法将用户添加到Firestore数据库

来自分类Dev

admin.firestore.FieldValue.serverTimestamp()无法与Firebase实时数据库一起使用

来自分类Dev

Firebase:将实时数据库时间戳转换为Firestore时间戳的代码/公式?

来自分类Dev

为什么Firebase数据库(Firestore)不添加文档

来自分类Dev

在Firebase(Cloud Firestore)中,每个数据库每秒超过1万次写入限制

来自分类Dev

Firestore 数据库不存储数据

来自分类Dev

无法将数据写入数据库

来自分类Dev

实时数据库与Firestore

来自分类Dev

尝试列出Firestore数据库的集合

来自分类Dev

Flutter Firestore离线数据库

来自分类Dev

Cloud Firestore或实时数据库

来自分类Dev

从Firestore数据库获取时间戳

来自分类Dev

Firestore 数据库创建错误

来自分类Dev

文档字段的 Firestore 数据库规则

来自分类Dev

Cloud Firestore,单独的单独数据库

来自分类Dev

保护 Firestore 数据库免受攻击

来自分类Dev

Google Cloud Firestore触发器未检测到写入数据库

来自分类Dev

Android 应用程序:从实时数据库到 Firestore - 将数据更新到数据库

来自分类Dev

与Firebase Cloud Firestore进行反应-呈现数据库中的数据

来自分类Dev

如何将数据添加到Firestore数据库中的现有文档

来自分类Dev

Firebase功能无法访问Firestore数据

来自分类Dev

将 Map 或 Array 的数据类型上传到 Firestore 数据库以匹配 Firestore 地图和数组类型

来自分类Dev

数据未正确进入 Firestore 数据库

Related 相关文章

  1. 1

    使用dialogflow将多个参数写入firestore数据库

  2. 2

    Firebase 云功能;无法访问 Firestore 数据库

  3. 3

    将Firebase实时数据库数据存储在Firestore中?

  4. 4

    无法将数据从表单发送到Firestore数据库

  5. 5

    无法从Firestore数据库中获取数据

  6. 6

    Firestore导入数据库

  7. 7

    使用Firebase注册后无法将用户添加到Firestore数据库

  8. 8

    admin.firestore.FieldValue.serverTimestamp()无法与Firebase实时数据库一起使用

  9. 9

    Firebase:将实时数据库时间戳转换为Firestore时间戳的代码/公式?

  10. 10

    为什么Firebase数据库(Firestore)不添加文档

  11. 11

    在Firebase(Cloud Firestore)中,每个数据库每秒超过1万次写入限制

  12. 12

    Firestore 数据库不存储数据

  13. 13

    无法将数据写入数据库

  14. 14

    实时数据库与Firestore

  15. 15

    尝试列出Firestore数据库的集合

  16. 16

    Flutter Firestore离线数据库

  17. 17

    Cloud Firestore或实时数据库

  18. 18

    从Firestore数据库获取时间戳

  19. 19

    Firestore 数据库创建错误

  20. 20

    文档字段的 Firestore 数据库规则

  21. 21

    Cloud Firestore,单独的单独数据库

  22. 22

    保护 Firestore 数据库免受攻击

  23. 23

    Google Cloud Firestore触发器未检测到写入数据库

  24. 24

    Android 应用程序:从实时数据库到 Firestore - 将数据更新到数据库

  25. 25

    与Firebase Cloud Firestore进行反应-呈现数据库中的数据

  26. 26

    如何将数据添加到Firestore数据库中的现有文档

  27. 27

    Firebase功能无法访问Firestore数据

  28. 28

    将 Map 或 Array 的数据类型上传到 Firestore 数据库以匹配 Firestore 地图和数组类型

  29. 29

    数据未正确进入 Firestore 数据库

热门标签

归档