Firebase Web update()删除所有其他子节点
Firebase Web update() deletes all other child nodes
大家好,我这里有奇怪的行为。当用户单击按钮时,我尝试更新一个特定的子节点。下面是我的代码:
var updates2 = {};
var offer = {
minusAccandShare: 2,
}
updates2['/offerLight/' + keyReal] = offer;
updates2['/offer/' + keyReal] = offer;
return firebase.database().ref().update(updates2);
一切都很好,正确的节点被更新,但在更新minusAccandShare时,其他一切都将被删除
结构如下:
offer
jifdjsiavdas
minusAccandShare: -6
offerName: "Replacement"
offerText: "You have the choice to..."
...
变成
offer
jifdjsiavdas
minusAccandShare: 2
我多次使用firebase指南中描述的这种方法,它总是非常有效。但是我用一个新键创建了一个全新的节点,所以没有什么要删除的。
D代码中实际发生的情况如下:
你正在完全写入键,从而擦除数据集中的所有属性。
updates2['/offer/' + keyReal] = offer;
删除该键下的所有数据。
试试这个:
firebase.database().ref('offer/' + keyReal).update({
minusAccandShare: 2,
});
这允许您确保更改您的firebase数据集中的指定属性。
希望对您有所帮助
似乎你应该阅读firebase refs。你似乎没有更新ref,所以你更新(大概)根DB对象(我从来没有传递一个空白ref到Firebase,所以我不能100%确定使用firebase.database().ref()
的行为是什么。
我已经"编译"了你的代码,所以你可以看到你传递给空ref:
的是什么var updates2 = {};
updates2['/offerLight/' + keyReal] = offer;
updates2['/offer/' + keyReal] = offer;
// Becomes...
updates2 = {
'/offerLight/jifdjsiavdas': {
minusAccandShare: 2
},
'/offer/jifdjsiavdas': {
minusAccandShare: 2
}
}
// So...
return firebase.database().ref().update( updates2 );
// is sent as
return firebase.database().ref().update({
'/offerLight/jifdjsiavdas': {
minusAccandShare: 2
},
'/offer/jifdjsiavdas': {
minusAccandShare: 2
}
})
看起来你实际上想要做的是引用子节点jifdjsiavdas
。您需要使用如下引用来指向它:
firebase.database.ref( 'offer/' + keyReal ).update( offer );
相关文章:
- 如何关闭所有其他子菜单
- 选择<李>使用普通JavaScript的子节点,而不是孙节点
- js循环遍历单击的元素子节点
- 如何将数据添加到json的子节点
- 删除HTML节点而不删除其子节点
- 如何在javascript DOM api中获取具有给定条件的子节点
- 仅使用某些子节点访问xml中父节点的子节点
- 检测单击子节点并发送槽事件处理程序
- 从 d3.js 中的树中选择节点的子节点
- 访问所选剑道树视图节点的子节点
- 为什么正文标记后的脚本标记在子节点中计数
- 难以获取使用属性选择的节点的子节点
- 使用Javascript设置带有子节点的父节点的类's文本等于.
- 如何确定父节点是否有子节点
- 在没有 jquery 的情况下更改子节点(父节点具有 ID)中的链接文本
- Javascript - 子节点计数
- 在子节点上重复
- 如何在D3.js基于力的标签布局图中获取公共子节点
- Firebase Web update()删除所有其他子节点
- 如何在其他人中找到活跃的兄弟姐妹(或)如何找到父节点的活动子节点?请只有Javascript