新手在这里!
所以我使用的是Firebase。我基本上有这种浓缩结构。我通过尝试遵循我所读过的内容(没有数组等)来实现这种结构。
我有一个用户对象需要包含一个东西列表。所以我最终在数据库中得到了这样的东西。
{
name: "clark"
friends: {
billyTheKid: true,
butcherOfBakersfield: true
}
}
当我添加一位朋友时,我正在这样做(再次原谅可怜的名字)
this.$firebaseUserObserver.update({
friends: {
[friendID]: true
}
});
当我执行此操作并返回到我的示例时,BillyTheKid
将被删除并替换为ButcherOfBakersfield
。
尽管使用set
我觉得我得到update
行为所以我必须错误地处理结构。
有人能为我提供指导吗?
答案 0 :(得分:2)
在ref上调用update()
,迭代传入的对象的属性,然后为每个对象调用set()
。所以你确实用每次通话取代了friends
。
正确的解决方案是在树中的正确级别调用update()
:
this.$firebaseUserObserver.child('friends').update({
[friendID]: true
});
但在这种情况下甚至不需要,您可以为特定朋友设置电话set()
:
this.$firebaseUserObserver.child('friends').child(friendId).set(true);
答案 1 :(得分:1)
如果在执行 .update 之前进入一个级别会发生什么?防爆。
$firebaseUserObserver.$ref.child("friends").update({ [friendId]: true})
我认为update语句基本上替换了节点的每个子节点,而不是替换.set所做的整个节点。基本上它对每个孩子都有一套。因此,它只能在结构中向下一层。