AngularFire2 - 附加到列表子

时间:2017-08-16 21:11:52

标签: firebase firebase-realtime-database angularfire2

我尝试将对象添加到/users/[userKey]/invitedTo,但set会删除现有数据,update也是如此。

我最终想要的是:

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

我应该只获取现有数据并添加到其中吗?

1 个答案:

答案 0 :(得分:0)

如果你想添加一个对象,你(通常)应该使用push方法而不是setupdate

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

这样,Firebase将创建一个唯一键并将其添加到invitedTo节点。

如果您想自己设置密钥,那么您可以使用update方法,如下所示:

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