【发布时间】:2021-08-20 01:24:42
【问题描述】:
我正在制作一个应用程序来保存和显示患者的癫痫发作历史。由于我是 Flutter 的新手,因此在癫痫发作时如何为当前用户在 firebase 中存储数据时遇到了困难。
我将数据存储在real-time database 中,因此,我将日期作为孩子使用,如果发生超过 1 次癫痫发作,那么它将在同一日期使用新密钥存储数据,但是假设明天也发生癫痫发作,日期为 2021 年 3 月 6 日,那么它将如何存储新日期的值?
目前,数据是这样存储的:
如何将新日期的数据存储在与 Seizure_history 相同的子项下?
我的代码如下所示:
// 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 ????",
"Caregiver_Number" : "033-253-04108 "
}
},
"dateBirth" : "1999-05-26",
"email" : "nabia.salman99@gmail.com",
"gender" : "female",
"mobile_no" : "2o29238347",
"name" : "Nabia Salman",
"profile_photo" : "https://firebasestorage.googleapis.com/v0/b/epicare-4d900.appspot.com/o/image_picker5066472271726518955.jpg?alt=media&token=41b83fa6-4429-448d-8b1b-48549efacba8"
},
"SmnClTT1STO3HywzhfZed1EF8GC2" : {
"caregivers" : {
"-MaXrew6oMLNIbpLdL9r" : {
"Caregiver_Name" : "Dad",
"Caregiver_Number" : "03145107020 "
},
"-MaXrhdR3BB4CVm_cRMN" : {
"Caregiver_Name" : "Mom",
"Caregiver_Number" : "03145308797 "
},
"-MaXtqrOMw0QLGdKkndG" : {
"Caregiver_Name" : "Sister Zong",
"Caregiver_Number" : "03176037020 "
}
},
"dateBirth" : "2021-05-12",
"email" : "hania9@gmail.com",
"gender" : "leamef",
"mobile_no" : "875487248944",
"name" : "Hania Salman",
"profile_photo" : "https://firebasestorage.googleapis.com/v0/b/epicare-4d900.appspot.com/o/c76d8746-395c-4632-82c3-709a8439f6c76494573163837145403.jpg?alt=media&token=0b425643-0e53-433b-aa19-a61898b4265f"
},
"yh6ATxquKjbmIWTbhVBudrGBVKB3" : {
"caregivers" : {
"-MaUwABpcS_MD6OLmaLP" : {
"Caregiver_Name" : "Dad",
"Caregiver_Number" : "03145107020 "
}
},
"dateBirth" : "2021-05-21",
"email" : "abdurehmanq19@gmail.com",
"gender" : "male",
"mobile_no" : "03325304108",
"name" : "Abdurehman",
"profile_photo" : "https://firebasestorage.googleapis.com/v0/b/epicare-4d900.appspot.com/o/image_picker-2053800923.jpg?alt=media&token=8232ffd0-bbb7-4090-99f6-10526d0de292"
}
}
}
【问题讨论】:
-
看起来是正确的,明天会是不同的一天,所以孩子将是 3-6-2021,将创建另一个节点并存储在那里。
-
其实我只是写了这段代码,所以我以为下一个日期的数据会出现在上一个日期的下面
-
它将在下一个日期存储。您可以尝试将日期变量设置为不同的值,例如:var date = '3-6-2021'
-
我不确定我是否理解您想要得到的结果。您能否将数据导出为 JSON 文本,然后在您的问题中添加您希望如何存储它?您可以通过单击 Firebase Database console 上溢出菜单 (⠇) 中的“导出 JSON”链接以文本形式获取 JSON。
-
如果我得到了正确的,代码是正确的。它将每天保存在 Seizure_history 下的不同节点中。
标签: flutter dart firebase-realtime-database