Почему update () полностью перезаписывает мои данные в Firebase?set () против update () - PullRequest
0 голосов
/ 24 ноября 2018

Я просмотрел документацию по Firebase, а также нашел несколько тем о стекопереработке о set () и update () в Firebase: например, здесь

Очень ясно, чточем они отличаются?

В следующем коде почему 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);
}

У меня изначально есть заголовок, content, datePosted и Id, и когда я обновляю его, заголовок и контент обновляются, а dataPosted и Id удаляются.Зачем?Хотя это должно быть поведение set ()?

before after

1 Ответ

0 голосов
/ 24 ноября 2018

Метод update () работает так, что он смотрит только на непосредственных потомков того места, где вы вызвали update.Все под этим местом заменено.Итак, что вы делаете, это каждый раз заменяете весь postId-1.

Если вы действительно хотите обновить дочерние элементы postId-1, сделайте это базовым местом, где вы вызываете update ():

firebase.database().ref().child('posts').child(modifiedId)
    .update(postDate)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...