Firebase Web update()删除所有其他子节点

A. *_*azi 3 javascript firebase firebase-realtime-database

大家好,我在这里得到奇怪的行为.当用户单击按钮时,我尝试更新一个特定的子节点.这是我的代码:

var updates2 = {};
var offer = {
  minusAccandShare: 2,
}
updates2['/offerLight/' + keyReal] = offer;
updates2['/offer/' + keyReal] = offer;
return firebase.database().ref().update(updates2);
Run Code Online (Sandbox Code Playgroud)

一切正常,正确的节点已更新,但在更新minusAccandShare时,其他所有内容都将被删除

结构如下:

offer
  jifdjsiavdas
    minusAccandShare: -6
    offerName: "Replacement"
    offerText: "You have the choice to..."
    ...
Run Code Online (Sandbox Code Playgroud)

它变成了

offer
  jifdjsiavdas
    minusAccandShare: 2
Run Code Online (Sandbox Code Playgroud)

我曾经多次使用这种方法在firebase指南中描述,它总是像魅力一样工作.但是我用新密钥创建了完全新的节点,因此没有任何东西可以删除.

谢谢大家:D

小智 5

您的代码中实际发生的是以下内容:

您正在完全写入密钥,从而擦除数据集中的所有属性.

这个

updates2['/offer/' + keyReal] = offer;
Run Code Online (Sandbox Code Playgroud)

擦除该特定键中的整个数据.

试试这个:

firebase.database().ref('offer/' + keyReal).update({
    minusAccandShare: 2,
  });
Run Code Online (Sandbox Code Playgroud)

这允许您确保更改firebase数据集中的指定属性.

我希望这有帮助