如何使用角度在firebase中存储多个待办事项列表?

时间:2019-09-26 09:35:34

标签: angular firebase google-cloud-firestore

我有一个待办事项列表应用程序,从主页开始,建议用户创建新任务。问题是,firebase中每个新的待办事项任务都具有唯一的ID。我需要所有创建的待办事项都在一个具有唯一ID的集合中,以便用户可以将其写在URL上并查看已创建的待办事项列表。但是我不知道该如何实现,是否需要在Firestore云数据库或代码中进行一些更改?

我还没有找到解决方案

此代码来自todo.component.ts

export class TodoComponent implements OnInit {

constructor( public service: TodoService, public firestore: 
AngularFirestore) { }

ngOnInit() {
this.resetForm();
}
resetForm(form?: NgForm) {
if (form != null) {
  form.resetForm();
}
this.service.formData = {
  id: null,
  todoName: '',
};
}
onSubmit(form: NgForm) {
let data = Object.assign({}, form.value);
delete data.id;
this.firestore.collection('todos').add(data);
this.resetForm(form);
}
}

这部分来自todo.model.ts

   export class Todo {
   id: string;
   todoName: string;
   }

和todo.service.ts

 export class TodoService {
 formData: Todo
 constructor(private firestore: AngularFirestore) { }

getTodos() {
return this.firestore.collection('todos').snapshotChanges();
}
}

2 个答案:

答案 0 :(得分:0)

要使用自定义ID,您需要使用.set而不是.add

这将创建一个ID为“ LA”的文档:

db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})

更多https://firebase.google.com/docs/firestore/manage-data/add-data

答案 1 :(得分:0)

据我了解,您的用例是拥有一个“待办事项清单”集合,以保存多个待办事项。从理论上讲,每个待办事项都应该有一个ID,一个名称和一个任务列表。

我从您的Todo模型中看到,您缺少ToDo内部的“任务”列表。为了获得包含任务的待办事项列表,您应该在待办事项中添加一个“任务”对象数组。并根据最终用户的交互更新数组。

例如,您要将任务添加/更新/删除到现有的ToDo列表中,可以使用@ yash-gandhi在其答案中提到的方法“ set”来实现。

类似:

db.collection("todos").doc("todo1").set({
id: "todo1",
name: "My first Todo",
tasks: [
  {
   desc: "water the plants",
   done: false
  },
  {
   desc: "call my mom",
   done: true
  }
]
})

注意:这里使用的“任务”对象只是一个示例,请根据您的用例相应地修改查询。

相关问题