2017-08-16 11 views
0

/users/[userKey]/invitedToにオブジェクトを追加しようとしていますが、setは既存のデータを削除するので、updateも削除されます。私はで終わるしたい何AngularFire2 - 子に追加する

はこのようなものです:

users 
    -uniqueuserkey 
     --name: Name 
     --InvitedTo 
      ---eventuniquekey1 
       ----eventname: event name 1 
       ----etc 
      ---eventuniquekey2 
       ----eventname: event name 2 
       ----etc 

-

// this.event.push(eventObj); 
this.event.push(eventObj).then((item) => { 
    if (item) { 
    const itemKey = item.key; 
    for (const key in guests) { 
     if (guests.hasOwnProperty(key)) { 

     const invitedObj = {}; 
     const invitedTo = this.db.object(`/users/${key}/invitedTo`); 
     invitedObj[itemKey] = eventObj; 
     invitedTo.set({ invitedObj }); 

     } 
    } 
    } 
}); 

アップデートは、私が必要とするまさにんが、それはまた、既存の値を削除します。

for (const key in guests) { 
     if (guests.hasOwnProperty(key)) { 
     const invitedObj = {}; 
     invitedObj[itemKey] = eventObj; 
     this.users.update(key, { invitedTo: invitedObj }); 
     } 
    } 

既存のデータを取得して追加するだけですか?

const invitedTo = this.db.list(`/users/${key}/invitedTo`); 
invitedTo.push(eventObj); 

そうすれば、Firebaseは一意のキーを作成して、invitedToノードに追加します:あなたがオブジェクトを追加したい場合は

答えて

0

は、(通常は)あなたの代わりにsetまたはupdatepush方法を使用する必要があります。

キーを自分で設定したい場合、あなたはこのようupdateメソッドを使用することができます。

const invitedTo = this.db.object(`/users/${key}/invitedTo/${itemKey}`); 
invitedTo.update(eventObj); 
関連する問題