我正在使用AngularFire2作为Ionic 2的提供者。我正在制作一个基本列表应用程序。以下是我在Firebase中的数据。Ionic 2&Angularfire2 + Firebase
{
"Checklists" : {
"0" : {
"title" : "new List"
},
"-KYHODAYcQ4OKMAzcXSG" : {
"items" : [ {
"checked" : "false",
"title" : "Milk"
} ],
"title" : "Newest List"
},
"-KYHS654NUHiwkexMwhL" : {
"items" : [ {
"checked" : "false",
"title" : "asdfadf"
} ],
"title" : "ddddd"
}
}
}
我有这一切拉好在我的家庭观点和更新每个清单没有问题的标题。我在我的数据提供者类中使用此代码检索数据,然后在我的home.ts
中调用它。顺便说一句,这很好。
this.checklists = angFire.database.list('/Checklists');
当我导航到我的应用程序中的新视图时,问题出现了。因此,我使用此代码移动到清单项目视图并传递当前清单。
this.checklist = this.navParams.get('checklist');
所以现在,在清单项来看,我把目前的检查表的参考与标题,如果清单有这些项目一起。如果我已经在Firebase中使用它们,则此工作正常。
问题是如何将项目或项目数组添加到其中一个清单(如果它不存在于Firebase中)。我可以这样做,在该视图现在没有问题,
if(this.checklist.items && this.checklist.items.length > 0){
this.checklist.items.push({title: data.name, checked:"false"});
}else{
this.checklist.items = [{title: data.name, checked:"false"}];
console.log(this.checklist);
}
这是当我想将它更新到,我遇到一个问题火力地堡。我可以通过在我的数据提供程序中执行此操作来使用初始数组项目更新一个清单。
this.checklists.update(id, {items: [
{
title: itemTitle,
checked: "false"
}
]});
但是这会覆盖已经存在的任何东西。
我需要获得对当前清单的引用,看看是否有一个项目数组,但我找不到任何文档。我试过裁判,但那不行。任何帮助都会很棒。谢谢。