首页 > 解决方案 > 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))

标签: reactjsfirebasefirebase-realtime-databaseaxios

解决方案


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

所以分两步流程:

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

    https://topxxx-xxx.firebaseio.com/journals.json?orderBy="title"&equalTo="the title"
    
  2. 通过发送DELETE到 URL 来删除匹配的节点,例如:

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

推荐阅读