Flutter 如何在不同日期下在Firebase实时数据库中存储数据

Flutter 如何在不同日期下在Firebase实时数据库中存储数据,flutter,dart,firebase-realtime-database,Flutter,Dart,Firebase Realtime Database,我正在制作一个应用程序来保存和显示患者的癫痫发作史。由于我是一名新手,在发作发生时,我很难在firebase中为当前用户存储数据 我将数据存储在实时数据库中,因此,我将使用该日期作为子日期,如果发生超过1次的扣押,则它将使用新密钥在同一日期下存储数据,但假设明天以及2021年3月6日发生扣押,则它将如何使用新日期存储该值 目前,数据存储方式如下: // Store seizure data to firebase on occurrence storeSeizureData() {

我正在制作一个应用程序来保存和显示患者的癫痫发作史。由于我是一名新手,在发作发生时,我很难在firebase中为当前用户存储数据

我将数据存储在
实时数据库中
,因此,我将使用该日期作为子日期,如果发生超过1次的扣押,则它将使用新密钥在同一日期下存储数据,但假设明天以及2021年3月6日发生扣押,则它将如何使用新日期存储该值

目前,数据存储方式如下:

// Store seizure data to firebase on occurrence
  storeSeizureData() {
    String dateString = DateTime.now().toString();
    var dateTime = DateTime.parse(dateString);
    var date = "${dateTime.day}-${dateTime.month}-${dateTime.year}";
    String duration = '15';
    print("Saving data to firebase");
    ref
        .child('User_data')
        .child(cuser.uid)
        .child("Seizure_history")
        .child(date)
        .push()
        .set({'duration': duration, 'datetime': dateString});

    Navigator.pushAndRemoveUntil(
      context,
      MaterialPageRoute(
        builder: (context) {
          return Homepage(device: widget.device);
        },
      ),
      (route) => false,
    );
  }
{
  "User_data" : {
    "QURxPw4UwBhvn0ZdMYb1wNPJ9ZH2" : {
      "Seizure_history" : {
        "2-6-2021" : {
          "-Mb8E79qdLq2-EI3Vy0i" : {
            "datetime" : "2021-06-02 01:20:56.535240",
            "duration" : "15"
          },
          "-Mb8EA3TYOQOUVpzQ3aE" : {
            "datetime" : "2021-06-02 01:21:08.509808",
            "duration" : "15"
          }
        }
        "3-6-2021" : {
          "-Mb8E79qdLq2-EI3Vy0i" : {
            "datetime" : "2021-06-02 01:20:56.535240",
            "duration" : "15"
          },
          "-Mb8EA3TYOQOUVpzQ3aE" : {
            "datetime" : "2021-06-02 01:21:08.509808",
            "duration" : "15"
          }
        }
      },
      "caregivers" : {
        "-Mat_n4SPyg3mgAFJeYi" : {
          "Caregiver_Name" : "Bro Since you start with:

String dateString = DateTime.now().toString();

如何将新日期的数据存储在与您的历史记录相同的子项下

我的代码如下所示:

// Store seizure data to firebase on occurrence
  storeSeizureData() {
    String dateString = DateTime.now().toString();
    var dateTime = DateTime.parse(dateString);
    var date = "${dateTime.day}-${dateTime.month}-${dateTime.year}";
    String duration = '15';
    print("Saving data to firebase");
    ref
        .child('User_data')
        .child(cuser.uid)
        .child("Seizure_history")
        .child(date)
        .push()
        .set({'duration': duration, 'datetime': dateString});

    Navigator.pushAndRemoveUntil(
      context,
      MaterialPageRoute(
        builder: (context) {
          return Homepage(device: widget.device);
        },
      ),
      (route) => false,
    );
  }
{
  "User_data" : {
    "QURxPw4UwBhvn0ZdMYb1wNPJ9ZH2" : {
      "Seizure_history" : {
        "2-6-2021" : {
          "-Mb8E79qdLq2-EI3Vy0i" : {
            "datetime" : "2021-06-02 01:20:56.535240",
            "duration" : "15"
          },
          "-Mb8EA3TYOQOUVpzQ3aE" : {
            "datetime" : "2021-06-02 01:21:08.509808",
            "duration" : "15"
          }
        }
        "3-6-2021" : {
          "-Mb8E79qdLq2-EI3Vy0i" : {
            "datetime" : "2021-06-02 01:20:56.535240",
            "duration" : "15"
          },
          "-Mb8EA3TYOQOUVpzQ3aE" : {
            "datetime" : "2021-06-02 01:21:08.509808",
            "duration" : "15"
          }
        }
      },
      "caregivers" : {
        "-Mat_n4SPyg3mgAFJeYi" : {
          "Caregiver_Name" : "Bro Since you start with:

String dateString = DateTime.now().toString();
我希望第二天的查封应与新日期分开存储,而不是在前一日期下存储,我希望这样存储:

// Store seizure data to firebase on occurrence
  storeSeizureData() {
    String dateString = DateTime.now().toString();
    var dateTime = DateTime.parse(dateString);
    var date = "${dateTime.day}-${dateTime.month}-${dateTime.year}";
    String duration = '15';
    print("Saving data to firebase");
    ref
        .child('User_data')
        .child(cuser.uid)
        .child("Seizure_history")
        .child(date)
        .push()
        .set({'duration': duration, 'datetime': dateString});

    Navigator.pushAndRemoveUntil(
      context,
      MaterialPageRoute(
        builder: (context) {
          return Homepage(device: widget.device);
        },
      ),
      (route) => false,
    );
  }
{
  "User_data" : {
    "QURxPw4UwBhvn0ZdMYb1wNPJ9ZH2" : {
      "Seizure_history" : {
        "2-6-2021" : {
          "-Mb8E79qdLq2-EI3Vy0i" : {
            "datetime" : "2021-06-02 01:20:56.535240",
            "duration" : "15"
          },
          "-Mb8EA3TYOQOUVpzQ3aE" : {
            "datetime" : "2021-06-02 01:21:08.509808",
            "duration" : "15"
          }
        }
        "3-6-2021" : {
          "-Mb8E79qdLq2-EI3Vy0i" : {
            "datetime" : "2021-06-02 01:20:56.535240",
            "duration" : "15"
          },
          "-Mb8EA3TYOQOUVpzQ3aE" : {
            "datetime" : "2021-06-02 01:21:08.509808",
            "duration" : "15"
          }
        }
      },
      "caregivers" : {
        "-Mat_n4SPyg3mgAFJeYi" : {
          "Caregiver_Name" : "Bro Since you start with:

String dateString = DateTime.now().toString();
{
“用户数据”:{
“QURxPw4UwBhvn0ZdMYb1wNPJ9ZH2”:{
“扣押历史记录”:{
"2-6-2021" : {
“-Mb8E79qdLq2-EI3Vy0i”:{
“日期时间”:“2021-06-02 01:20:56.535240”,
“持续时间”:“15”
},
“-Mb8EA3TYOQOUVpzQ3aE”:{
“日期时间”:“2021-06-02 01:21:08.509808”,
“持续时间”:“15”
}
}
"3-6-2021" : {
“-Mb8E79qdLq2-EI3Vy0i”:{
“日期时间”:“2021-06-02 01:20:56.535240”,
“持续时间”:“15”
},
“-Mb8EA3TYOQOUVpzQ3aE”:{
“日期时间”:“2021-06-02 01:21:08.509808”,
“持续时间”:“15”
}
}
},
“照顾者”:{
“-Mat_n4SPyg3mgAFJeYi”:{
“护理者姓名”:“兄弟,因为您从:

任何时候运行此代码都会确定当前日期。因此,如果您在6月3日运行此代码,它将生成该日期,并且数据库中的密钥将为6月3日



与您的实际问题无关,但我强烈建议使用ISO-8601格式作为日期,即:
“2021-06-02”
。这种格式的优点是,您可以查询日期范围,例如使用
ref.orderByKey().startAt(“2021-”).endAt(“2021~”)获取2021年的所有日期

看起来是正确的,明天将是不同的一天,因此子节点将是3-6-2021,将创建另一个节点并存储在那里。实际上,我刚刚编写了此代码,因此我认为下一个日期的数据将显示在下一个日期存储的前一个日期下。您可以尝试使用不同的值设置日期变量,例如:var date='3-6-2021'我不确定我是否理解您想要得到的结果。您能否将数据导出为JSON文本,然后将其添加到您的问题中以存储方式保存?您可以通过单击溢出菜单中的“导出JSON”链接以文本形式获取JSON(⠇) 在您的上。如果我获得的信息正确,则代码是正确的。它将每天保存在不同的节点的“历史记录”下。感谢您的建议,我将记住这一点以备将来使用:)