如何将数据添加到实时数据库?

Posted

技术标签:

【中文标题】如何将数据添加到实时数据库?【英文标题】:How to add data to Realtime Database? 【发布时间】:2021-12-31 01:22:37 【问题描述】:

我只是想创建一个包含一些数据的帐户。不幸的是,我不知道错误在哪里,并且在注册过程中创建了帐户但数据没有保存在实时数据库中。

mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(task -> 
    if (task.isSuccessful()) 
        FirebaseUser user = mAuth.getCurrentUser();
        reference = FirebaseDatabase.getInstance().getReference("Users").child(user.getUid());

        HashMap<String, Object> hashMap = new HashMap<>();
        hashMap.put("username", username);
        hashMap.put("email", email);
        hashMap.put("id", user.getUid());
        hashMap.put("imageURL", "default");
        hashMap.put("status", "offline");

        reference.setValue(hashMap).addOnCompleteListener(task1 -> 
            if (task1.isSuccessful()) 
                Toast.makeText(RegisterActivity.this, "Registered Successfully", Toast.LENGTH_SHORT).show();
                startActivity(new Intent(RegisterActivity.this, StartActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
            else
                Toast.makeText(RegisterActivity.this, "Registered Failed", Toast.LENGTH_SHORT).show();
            
        );
    
);

【问题讨论】:

【参考方案1】:

Task 失败时,其中会有一个异常,其中包含有关失败原因的详细信息。记录异常以查找问题的根本原因:

reference.setValue(hashMap).addOnCompleteListener(task1 -> 
    if (task1.isSuccessful()) 
        Toast.makeText(RegisterActivity.this, "Registered Successfully", Toast.LENGTH_SHORT).show();
        startActivity(new Intent(RegisterActivity.this, StartActivity.class).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
    else
        Toast.makeText(RegisterActivity.this, "Registered Failed", Toast.LENGTH_SHORT).show();
        Log.e("FIREBASE", "Registering user in database failed", task.getException()); // ?
    
);

一旦您收到异常,请尝试解决它所说的内容,或搜索错误消息以查看其他人之前是否遇到过同样的问题。

【讨论】:

在这种情况下,您可能需要检查应用程序的 logcat 输出以获取相关消息。例如:***.com/questions/68806876/…。如果情况并非如此,enabling debug logging 可能会让您了解更多问题的原因。 谢谢,对我帮助很大

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

如何将实时语音添加到 Microsoft bot 框架的文本数据(正是 google 语音所做的)

Firebase 实时数据库未更新 // 数据未添加到 Firebase 实时数据库

成功注册电子邮件和密码后,我可以自动将电子邮件添加到实时数据库吗?

为啥在使用 kotlin 将数据添加到 firebase 实时数据库时会得到重复值?

带有 Flutter 的实时数据库覆盖数据而不是将其添加到现有节点

反应原生 firebase 创建用户,然后将其他数据添加到实时数据库