将请求发布到没有唯一键

时间:2018-02-11 13:49:05

标签: firebase firebase-realtime-database

我想将新数据发布到我的firebase API,但每次我这样做时,都会生成一个新的密钥,如-L545gZW7E6Ed6iqXRok,其中包含我的对象。我想在没有这个新密钥的情况下将我的对象直接保存到API。 This SO question answers如何使用set()方法完成它,但我想使用Postman实现这一点。我使用Postman直接发布到firebase。 url:https://my-firebase-project.firebaseio.com/galaxies.json方法POST。

//current saving like this in firebase
"0000001" : {
  "active": false,
  "name": "tp-milky-way",
  "time": 60
},
"-L545gZW7E6Ed6iqXRok": {
	"0000011": {
      "active": false,
      "name": "tp-andromeda",
      "time": 60
    }
}

//I want it without the key
"0000001" : {
  "active": false,
  "name": "tp-milky-way",
  "time": 60
},
"0000011" : {
  "active": false,
  "name": "tp-andromeda",
  "time": 60
}

编辑:我发现我可以将PUT与最初“放入”firebase的整个json对象一起添加或删除,并且firebase将新的put请求与已经存在的内容进行比较并相应地进行更新。我不知道行为是我理解的,或者没有更好的方法来添加数据而没有自动生成的密钥。

1 个答案:

答案 0 :(得分:3)

使用POST verb时,Firebase会生成新位置。这与REST-ful惯用法一致:POST用于在服务器定义的新位置创建新对象。

如果您要写入现有位置或您控制的新位置,请使用PUT verb。在这种情况下,数据将写入您在URL中指定的位置,它将覆盖该位置的任何现有数据。

如果您想更新现有位置的部分数据,但未修改其他数据,请使用PATCH verb

如果您的HTTP客户端不支持指定动词,您可以选择pass the verb as HTTP-Method-Override header