axios请求忽略参数

Posted

技术标签:

【中文标题】axios请求忽略参数【英文标题】:Axios requests ignoring parameters 【发布时间】:2020-01-17 19:18:48 【问题描述】:

我正在向 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))

【问题讨论】:

【参考方案1】:

Firebase 实时数据库 API 不支持条件删除。要删除节点,您必须指定该节点的整个部分,并且(在 REST API 中)use the DELETE verb 或 use the X-HTTP-Method-Override: DELETE header。

所以分两步流程:

    执行查询以查找具有您要查找的标题的节点:

    https://topxxx-xxx.firebaseio.com/journals.json?orderBy="title"&equalTo="the title"
    

    通过向以下 URL 发送 DELETE 来删除匹配节点:

    https://topxxx-xxx.firebaseio.com/journals/journalId1.json
    

【讨论】:

哦,我明白了。谢谢!那么我还是改用 Firestore 会更好吗? Firestore 也不支持条件删除。在那里你也需要先查询找到所有文档,然后一个一个地删除它们。【参考方案2】:

您不能像在 firebase 中那样从 json 文件中删除指定项目,并且使用 GET 也会返回整个集合。它在火力基地方面工作得非常正确。如果你想要一些你所期望的东西,可以选择一个小型烧瓶服务器或在 firebase 中检查云功能

【讨论】:

【参考方案3】:

您可能希望将该请求发送到连接到 firebase 的后端服务(我假设您使用的是 axios)。然后调用remove方法演示here

【讨论】:

感谢您的回答,但我看到许多其他回复显示如何使用 axios.delete 而不是删除(例如***.com/questions/52694011/…)。也许我在这里遗漏了一些重要的东西......

以上是关于axios请求忽略参数的主要内容,如果未能解决你的问题,请参考以下文章

axios中url拼接和请求参数分离

axios发delete请求,后台收不到参数;

如何在需要标头的axios发布请求中具有配置参数

axios 请求参数配置说明

axios delete请求 参数

如何在nodejs获取请求中访问axios参数