我可以阻止Firebase set()覆盖现有数据吗?

Itu*_*mac 11 firebase

如果我这样做,我的itemRef一切都很好:

itemRef.child('appreciates').set(newFlag);
itemRef.child('id').set(newId);
Run Code Online (Sandbox Code Playgroud)

itemRef的其他属性仍然是BUT,child_changed被调用两次

如果我这样做:

itemRef.set({appreciates:newFlag,id:newId});
Run Code Online (Sandbox Code Playgroud)

child_changed仅被调用一次,但我的其他属性被销毁.除了重新填充整个参考对象的笨拙之外,还有一种解决方法吗?

谢谢,

蒂姆

And*_*Lee 18

Firebase update()函数允许您修改对象的某些子项,同时保持其他子项不变.无论有多少个孩子被更改,更新功能只会在其他客户端上触发一个"值"事件,用于写入的路径.

在此示例中,您可以执行以下操作:

itemRef.update({appreciates:newFlag,id:newId});
Run Code Online (Sandbox Code Playgroud)

update()的文档在这里.

  • 是否可以只写入新数据,而不是覆盖现有数据? (18认同)