如何在Postman中向Firebase API直接存入数据而不生成唯一键
如何在Postman中直接向Firebase Realtime Database存储对象(避免自动生成唯一键)
我太懂这个痛点了!用POST请求Firebase的.json端点时,它默认就是会生成类似-L545gZW7E6Ed6iqXRok的推送ID,把你的数据嵌套在这个随机键下面——这其实是Firebase在模拟SDK里push()方法的行为,专门用来生成唯一子节点的。而你想要的是像set()那样直接把对象存在目标节点,不用额外嵌套,用PUT方法确实是正确的解法,下面给你一步步说怎么操作:
两种常见的PUT使用场景
1. 自定义键存储单条数据
如果你想给这条数据指定自己的唯一键(比如milky-way、andromeda这种有意义的名称),只需要把请求URL改成带自定义键的形式:
https://my-firebase-project.firebaseio.com/galaxies/[你的自定义键].json
然后用PUT方法发送JSON格式的数据体。举个实际例子:
- 请求URL:
https://my-firebase-project.firebaseio.com/galaxies/milky-way.json - 请求体(Raw JSON):
{ "name": "银河系", "starCount": 200000000000, "type": "螺旋星系" }
发送后,你的数据就会直接存放在galaxies/milky-way节点下,完全没有自动生成的嵌套键。
2. 直接覆盖整个节点的内容
如果你想一次性把整个galaxies节点替换成你定义的完整对象(注意:这会清空原来galaxies下的所有现有数据,操作前要谨慎!),直接用PUT请求根节点的URL:
https://my-firebase-project.firebaseio.com/galaxies.json
然后把你的完整对象作为请求体发送。比如:
- 请求体(Raw JSON):
{ "milky-way": { "name": "银河系", "starCount": 200000000000 }, "andromeda": { "name": "仙女座星系", "starCount": 1000000000000 } }
发送后,galaxies节点的内容就会完全变成你提交的这个对象,原有数据会被覆盖。
补充:POST和PUT的核心区别
- POST:Firebase自动生成唯一推送ID,将数据作为该ID的子节点添加到目标路径,对应SDK的
push()方法,适合添加多条需要唯一标识的无序列数据。 - PUT:直接设置目标节点的值,对应SDK的
set()方法;如果目标节点不存在则创建,存在则覆盖原有内容,适合自定义键存储或批量更新节点。
内容的提问来源于stack exchange,提问作者OctaviaLo
相关产品推荐
相关产品推荐

