我尝试将对象添加到/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 });
}
}
我应该只获取现有数据并添加到其中吗?
答案 0 :(得分:0)
如果你想添加一个对象,你(通常)应该使用push
方法而不是set
或update
:
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);