我目前正在使用axios在我的React应用程序中从Firebase数据库发布/获取。在尝试将第一个POST写入数据库之前,我没有任何问题。它已成功发布,但是我得到的是ID的随机字符串,而不是直接将其发布到我想要的数据库中。
而不是像我想要的那样是preregs-> group-> 2020-> userID:value,而是使用prereg-> random key-> group-> 2020-> userID:value。
当前,我的POST代码读为:
axios.post('/preregs.json', {
[this.props.group]: {
[this.props.currentYear]: {
[this.props.userID]: document.getElementsByTagName("input")["email"].value
}
}
})
我听说,如果您不使用POST将数据放入Firebase数据库,它将不会创建该随机ID。但是,补丁程序将无法工作,因为它只会删除2020年之内的所有数据。我查看了其他问题,例如Setting custom key when pushing new data to firebase database,但它使用Firebase代替Axios来完成工作。 Firebase POST custom ID似乎也有相同的问题,唯一的答案是使用“ put”,但这再次抹平了我在2020年拥有的所有其他东西。当我不这样做时,我是否还缺少阻止Firebase放置此随机密钥的功能?不想吗?
根据REST API documentation for Realtime Database,POST等同于使用客户端SDK时的"push" operation。该推送操作always涉及在随机ID下添加数据。不能避免这样做。
如果知道要添加数据的节点的名称,则应改用PUT。这等效于将"set" operation与客户端SDK一起使用。
由于您在javascript客户端中运行,因此也请考虑仅使用客户端SDK,因为与REST API相比,它更容易使用且效率更高。