私は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);
}
私は私が問題に遭遇しFirebaseにそれを更新したいときには、これを行うことにより、問題なく今のビューでそれを行うことができます。私はそれを私のデータプロバイダでこれを行うことによって項目の最初の配列で1つのチェックリストを更新することができます。
this.checklists.update(id, {items: [
{
title: itemTitle,
checked: "false"
}
]});
しかし、これは既に存在するものを上書きします。
現在のチェックリストへの参照を取得し、アイテム配列があるかどうかを確認する必要がありますが、これに関するドキュメントが見つかりません。私はrefを試しましたが、うまくいかないでしょう。どんな助けも素晴らしいだろう。ありがとう。