【问题标题】:Android - Firebase - Save new Data without overwriting old DataAndroid - Firebase - 保存新数据而不覆盖旧数据
【发布时间】:2018-03-06 14:34:30
【问题描述】:

创建此问题是因为我之前的问题包含 2 个问题,而不是缩小到 1 个

瞄准

用户将能够在不覆盖之前提交的数据的情况下存储新数据

说明

目前,当用户输入新报告时,事件报告节点中的用户事件报告数据将被覆盖。

用户发送的旧事件报告中的数据应与新数据一起保存。

这样,当局将能够查看以前的报告以及新的报告数据。

问题

当前登录的用户每次保存“报告”时,报告数据将覆盖报告数据

数据保存代码

private void submitReport(final String userReportDate,final String userReportTime,
                              final String userReportLocation,final String userReportDescription) {

        jReportCurrentUserID = FirebaseAuth.getInstance().getCurrentUser();
        final String reportUserID = jReportCurrentUserID.getUid();
        jReportByUserDatabase = FirebaseDatabase.getInstance().getReference().child("Incident Reports").child(reportUserID);

        HashMap<String, String> incidentReportUser = new HashMap<>();
        incidentReportUser.put("date", userReportDate);
        incidentReportUser.put("time", userReportTime);
        incidentReportUser.put("location", userReportLocation);
        incidentReportUser.put("description", userReportDescription);

        jReportByUserDatabase.setValue(incidentReportUser).addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                if(task.isSuccessful()){
                    jReportLoad.dismiss();
                    Toast.makeText(getActivity(), "Report was Sent", Toast.LENGTH_SHORT).show();
                    jReportDatePick.setText("");
                    jReportTimeEnt.setText("");
                    jReportLocationEnt.setText("");
                    jReportDescriptionEnt.setText("");
                }else{
                    jReportLoad.dismiss();
                    Toast.makeText(getActivity(), "Report failed to be sent", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

【问题讨论】:

    标签: java android firebase firebase-realtime-database firebase-authentication


    【解决方案1】:

    push documentation

    请注意,您的所有报告现在都将存储在 .push()

    创建的唯一键下一层
    private void submitReport(final String userReportDate,final String userReportTime,
                                  final String userReportLocation,final String userReportDescription) {
    
            jReportCurrentUserID = FirebaseAuth.getInstance().getCurrentUser();
    
            final String reportUserID = jReportCurrentUserID.getUid();
            jReportByUserDatabase = FirebaseDatabase.getInstance().getReference().child("Incident Reports").child(reportUserID).push();
            DatabaseReference newReport = jReportByUserDatabase.push();
    
            HashMap<String, String> incidentReportUser = new HashMap<>();
            incidentReportUser.put("date", userReportDate);
            incidentReportUser.put("time", userReportTime);
            incidentReportUser.put("location", userReportLocation);
            incidentReportUser.put("description", userReportDescription);
    
            newReport.setValue(incidentReportUser).addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if(task.isSuccessful()){
                        jReportLoad.dismiss();
                        Toast.makeText(getActivity(), "Report was Sent", Toast.LENGTH_SHORT).show();
                        jReportDatePick.setText("");
                        jReportTimeEnt.setText("");
                        jReportLocationEnt.setText("");
                        jReportDescriptionEnt.setText("");
                    }else{
                        jReportLoad.dismiss();
                        Toast.makeText(getActivity(), "Report failed to be sent", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    

    【讨论】:

    • 谢谢你的回答彼得!! = D 我投了赞成票,但我只能接受一个答案,所以我选择了第一个。对不起
    【解决方案2】:

    jReportByUserDatabase.push().setValue(incidentReportUser)

    这样写(push() 添加值而不是覆盖)。

    【讨论】:

    • 谢谢你的回答学员!! =D
    • 谢谢!终于找到了我的问题的解决方案!
    猜你喜欢
    • 2018-07-15
    • 2023-03-18
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多