在没有唯一键的情况下向 Firebase 发布请求

Oct*_*aLo 3 firebase firebase-realtime-database

我想将新数据发布到我的 firebase API,但每次我这样做时,-L545gZW7E6Ed6iqXRok都会生成一个新的密钥,例如我的对象在其中生成。我想在没有这个新密钥的情况下将我的对象直接保存到 API。这个 SO 问题回答了如何使用 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
}
Run Code Online (Sandbox Code Playgroud)

编辑:我发现我可以将 PUT 与整个 json 对象一起使用,该对象最初是通过添加或删除“放置”到 firebase 的,并且 firebase 将新的放置请求与那里已有的内容进行比较并相应地更新。我不知道这种行为是我所理解的,或者是否没有更好的方法来添加没有自动生成的密钥的数据。

Fra*_*len 6

当您使用POST动词 时,Firebase 会生成一个新位置。这符合 REST-ful 习惯用法:POST用于在服务器定义的新位置创建新对象。

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

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

如果您的 HTTP 客户端不支持指定动词,您可以选择将动词作为HTTP-Method-Overrideheader传递