reactjs - axios请求忽略参数
问题描述
我正在向 Firebase Realtime API 发送请求。当我尝试从特定集合(例如期刊)中删除项目并使用 axios.delete(" https://topxxx-xxx.firebaseio.com/journals.json ", {title: "Nature "}}) 集合中的所有期刊都被删除,而不仅仅是“自然”。同样,如果我执行 get 请求并指定标题,则会返回所有期刊。
我也尝试过使用“ https://topxxx-xxx.firebaseio.com/journals.json ”,{params:{title:“Nature”}}。但这也会返回所有期刊。这是一个示例删除请求:
axios.delete("https://topxxx-xxx.firebaseio.com/journals.json", {title: this.state.title})
.catch(error=> console.log("Error" + error))
解决方案
Firebase 实时数据库 API 不支持条件删除。要删除一个节点,您必须指定该节点的整个部分,并且(在 REST API 中)使用DELETE
动词或使用X-HTTP-Method-Override: DELETE
header。
所以分两步流程:
执行查询以查找具有您要查找的标题的节点:
https://topxxx-xxx.firebaseio.com/journals.json?orderBy="title"&equalTo="the title"
通过发送
DELETE
到 URL 来删除匹配的节点,例如:https://topxxx-xxx.firebaseio.com/journals/journalId1.json
推荐阅读
- c# - 如何正确处理 C# Cmdlet helpmessage 本地化的资源
- python - 如何基于平台动态改变 Kivy 窗口尺寸
- c# - 如何创建 URL 友好路由并删除索引
- javascript - 如何使用 html 和 Javascript 在特殊符号后隐藏部分文本?
- javascript - 获取容器顶部与单击元素之间的差异
- email - Java Mail 在云服务器中不起作用
- r - 计算多行条件的巧妙方法
- google-sheets - 对具有多个条件的工作表求和
- angular - 如何要求下拉选项中不再具有值的下拉列表?
- c++ - mbsrtowcs 成功,但是如何按字符打印字符