[英]Why does update() completely overwrites my data in Firebase? set() vs. update()
我已经浏览了 Firebase 文档,另外我在 stackoverflow 上找到了一些关于 Firebase 中的 set() 与 update() 的主题:例如这里
很清楚他们两个有什么区别。
在下面的代码中,为什么 update() 会覆盖我现有的数据?
function saveChanges(event) {
event.preventDefault();
let modifiedTitle = document.getElementById('blog-title').value;
let modifiedContent = document.getElementById('blog-content').value;
let modifiedId = document.getElementById('blog-id-storage').innerHTML;
let postData =
title: modifiedTitle,
content: modifiedContent
};
let updates = {};
updates[modifiedId] = postData;
firebase.database().ref().child('posts/').update(updates);
}
我最初有一个标题、内容、datePosted 和 Id,当我更新它时,标题和内容会更新,而 dataPosted 和 Id 会被删除。 为什么? 虽然这应该是 set() 的行为?
update()的工作方式是仅查看调用update的位置的直接子代。 该位置下方的所有内容都会被替换。 因此,您要做的是每次都替换整个postId-1。
如果您只想更新postId-1的子代,则将其作为调用update()的基本位置:
firebase.database().ref().child('posts').child(modifiedId)
.update(postDate)
以下对我有用:
admin.database().ref(SITE).child("ChildName").child("2ndLevelChild")
.update({[KeyVariable]:valueVariable});
显然,如果我像下面这样使用它,它就不起作用(它会覆盖:
var newChild = {};
newChild["ChildName/" + "2ndLevelChild"] = {
[KeyVariable]: valueVariable
};
admin.database().ref(SITE).update(newChild);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.