我已经阅读了Firebase文档,此外,我还发现了一些有关Firebase中set()与update()的stackoverflow主题:例如here
很明显,两者之间有什么区别。
在以下代码中,为什么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()的行为?
答案 0 :(得分:4)
update()的工作方式是仅查看调用update的位置的直接子级。该位置下方的所有内容都会被替换。因此,您要做的就是每次都替换整个postId-1。
如果您只想更新postId-1的子代,则将其称为调用update()的基本位置:
firebase.database().ref().child('posts').child(modifiedId)
.update(postDate)