为什么 update() 会完全覆盖我在 Firebase 中的数据?设置()与更新()

Gab*_*nus 1 javascript firebase firebase-realtime-database

我已经浏览了 Firebase 文档,另外我在 Firebase 中找到了一些关于 set() 与 update() 的关于 stackoverflow 的主题:例如这里

很明显,他们两个之间的区别是什么。

在下面的代码中,为什么 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);
}
Run Code Online (Sandbox Code Playgroud)

我最初有一个标题、内容、datePosted 和 Id,当我更新它时,标题和内容会更新,而 dataPosted 和 Id 会被删除。为什么?虽然这应该是 set() 的行为?

前 后

Dou*_*son 5

update() 的工作方式是它只查看您调用 update 的位置的直接子级。该位置下方的所有内容都将被替换。因此,您所做的是每次都替换整个 postId-1。

如果您真的只想更新 postId-1 的子项,则将其设为您调用 update() 的基本位置:

firebase.database().ref().child('posts').child(modifiedId)
    .update(postDate)
Run Code Online (Sandbox Code Playgroud)