Json 带有颤振的实时数据库覆盖数据,而不是将其添加到现有节点
我正在使用Flatter与Firebase实时数据库。如代码所示,每个用户都可以创建自己的列表并向其中添加任务。但是,每次我尝试将新任务添加到同一列表时,它都会覆盖现有数据,而不是附加到现有数据。谁能帮帮我吗 这就是ToDo模型Json 带有颤振的实时数据库覆盖数据,而不是将其添加到现有节点,json,firebase,flutter,firebase-realtime-database,Json,Firebase,Flutter,Firebase Realtime Database,我正在使用Flatter与Firebase实时数据库。如代码所示,每个用户都可以创建自己的列表并向其中添加任务。但是,每次我尝试将新任务添加到同一列表时,它都会覆盖现有数据,而不是附加到现有数据。谁能帮帮我吗 这就是ToDo模型 class Todo { String group; String subject; bool completed; String userId; Todo(this.userId, this.group, this.subject, this.c
class Todo {
String group;
String subject;
bool completed;
String userId;
Todo(this.userId, this.group, this.subject, this.completed);
Todo.fromSnapshot(DataSnapshot snapshot)
: group = snapshot.value["group"],
userId = snapshot.value["userId"],
subject = snapshot.value["subject"],
completed = snapshot.value["completed"];
toJson() {
return {
userId: {
"lists": [
{
"groupname": group,
"tasks": [
{"name": subject, "done": completed},
]
},
]
}
};
}
}
这是要添加到数据库的函数
addNewTodo(String groupn, String taskn) {
if (groupn.length > 0 && taskn.length > 0) {
Todo todo =
new Todo(widget.userId, groupn.toString(), taskn.toString(), false);
_database.reference().child("Todo").set(todo.toJson());
}
}
groupn和taskn是用户输入的变量。用于在子项下追加数据
您需要删除“Todo”子项下的当前数据,以确保其完整性,因为您的数据结构将更改为以下格式:
Todo
|-> "UniqueID1"
| |-> Todo Details (JSON)
|
|-> "UniqueID2"
| |-> Todo Details (JSON)
|
|-> ...
UniqueIDX
是Firebase每次推送()或添加Todo时生成的字母数字字符串
您可以使用来侦听数据。您好
set()
,顾名思义,将子项的值设置为您指定的值,如果该子项已经存在,则这本质上是一个更新。如果答案有用,请标记为接受,谢谢!