База данных Firebase REST PUT перезаписывает данные вместо добавления - PullRequest
0 голосов
/ 24 октября 2018

У меня есть простая база данных Firebase, которая выглядит следующим образом:

app-name
 ᠁
[-]⋯Users
     ᠁
     ᠁⋯⋯ Daniel: daniel@gmail.com
     ᠁
     ᠁⋯⋯ John: john@gmail.com

Я хочу сделать запрос REST PUT, чтобы добавить Peter: peter@gmail.com в базу данных,это должно выглядеть примерно так:

app-name
 ᠁
[-]⋯Users
     ᠁
     ᠁⋯⋯ Daniel: daniel@gmail.com
     ᠁
     ᠁⋯⋯ John: john@gmail.com
     ᠁
     ᠁⋯⋯ Peter: peter@gmail.com

Я использую следующий код JavaScript:

httpPut: function(){
    var xhr = new XMLHttpRequest();
    xhr.open('PUT', "https://app-name.firebaseio.com/Users.json", true);
    xhr.setRequestHeader('Content-type', 'application/json');
    xhr.onload = function () {
        cc.log(this.responseText);
    };
    xhr.send("{\"Peter\": \"peter@gmail.com\"}");
},

Проблема в том, что когда я звоню httpPut()фактически он перезаписывает весь пользовательский контент только с помощью Peter: peter@gmail, оставляя его следующим образом:

app-name
 ᠁
[-]⋯Users
     ᠁
     ᠁⋯⋯ Peter: peter@gmail.com

Что можно сделать, чтобы добавить только строку вместо перезаписи всего пользовательского содержимого

1 Ответ

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

Вы должны использовать:
Поместить запрос на запись (задает данные / перезаписать)
Опубликовать запрос на добавление (например, толчок массива javascript)
Запрос исправления для обновления

https://firebase.google.com/docs/reference/rest/database/#section-patch

Если вы выполняете вызовы REST из браузера, который не поддерживает предыдущие методы, вы можете переопределить метод запроса, сделав запрос POST и установив свой метод, используя заголовок запроса X-HTTP-Method-Override

https://firebase.google.com/docs/reference/rest/database/#section-method-override

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...