2017-08-16 4 views
0

Ich versuche, ein Objekt zu /users/[userKey]/invitedTo hinzuzufügen, aber set löscht die vorhandenen Daten, so tut update.AngularFire2 - An die Liste anfügen kind

Was ich will, mit am Ende ist so etwas wie dieses:

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 }); 

     } 
    } 
    } 
}); 

-Update macht genau das, was ich brauche, aber es löscht auch vorhandenen Wert:

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

Sollte ich nur die vorhandenen Daten erhalten und hinzufügen?

Antwort

0

Wenn Sie ein Objekt hinzufügen möchten, können Sie (in der Regel) sollten verwenden, um die push Methode anstelle von set oder update:

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

Auf diese Weise Firebase wird einen eindeutigen Schlüssel erstellen und fügen Sie es dem invitedTo Knoten .

Wenn Sie den Schlüssel selbst einstellen wollen, dann könnten Sie die update Methode wie folgt verwenden:

const invitedTo = this.db.object(`/users/${key}/invitedTo/${itemKey}`); 
invitedTo.update(eventObj);