Firebase数据库REST PUT覆盖数据而不是添加数据

时间:2018-10-24 20:00:25

标签: javascript rest firebase firebase-realtime-database

我有一个简单的Firebase数据库,看起来像这样:

Long

我想发出REST PUT请求,以便将app-name ᠁ [-]⋯Users ᠁ ᠁⋯⋯ Daniel: daniel@gmail.com ᠁ ᠁⋯⋯ John: john@gmail.com 添加到数据库,该请求应看起来像这样:

Peter: peter@gmail.com

我正在使用以下javascript代码:

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

问题在于,当我调用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()覆盖了所有Users内容,像这样:

Peter: peter@gmail

我该怎么做才能仅添加一行而不覆盖所有用户内容?

1 个答案:

答案 0 :(得分:0)

您应该使用:
放置写入请求(设置数据/重写)
发布添加请求(如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