【问题标题】:Use GET to return records based on nested fields使用 GET 根据嵌套字段返回记录
【发布时间】:2019-10-17 05:24:07
【问题描述】:

我正在尝试根据嵌套对象中的 mongo 数据集中的值检索记录。

data 是一个对象,documentId 是其中的一个字段,我只想检索数据中具有“5da713edf0a1645ae95b11oo”的documentId 的对象

我试过这段代码

const res = await axios.get('/api/card',{
  params:{
    data:documentId: "5da713edf0a1645ae95b11oo"
  }
});

但它只返回所有记录

【问题讨论】:

  • 您需要用引号将"data:documentId" 括起来吗?

标签: javascript reactjs axios


【解决方案1】:

尝试以下方法之一:

const res = await axios.get('/api/card',{
  params:{
    documentId: "5da713edf0a1645ae95b11oo"
  }
});

这将是对/api/card?documentId=5da713edf0a1645ae95b11oo 的 GET 请求

const res = await axios.get('/api/card',{
  params:{
    data: {
      documentId: "5da713edf0a1645ae95b11oo"
    }
  }
});

这将是一个 GET 请求,类似于 /api/card?data=%7B%22documentId%22%3A%225da713edf0a1645ae95b11oo%22%7D

...%7B%22documentId%22%3A%225da713edf0a1645ae95b11oo%22%7D{"documentId":"5da713edf0a1645ae95b11oo"} 的 URL 编码版本

【讨论】:

    【解决方案2】:

    根据文件说我们不能做你所做的事情。

    axios.get('/api/card')
    .then((res) => {
        const data = res.data.id;
        //handle your response here.
        //can write your logic to retrieve your specific data 
    });
    

    更多信息请参考doc

    【讨论】:

      【解决方案3】:

      我将假设您收到的响应数据是一个对象数组。你可以过滤它。不过,您将不得不遍历数据。

      const res = await axios.get('/api/card')
      
      const filteredData = res.data.filter((item) => item.documentId === '5da713edf0a1645ae95b11oo')
      

      【讨论】:

        【解决方案4】:

        你可以试试这个:

        data_get() {
            axios.get('/api/card')
            .then((res) => {
                this.setState({
                    documentId: res.data.id, //5da713edf0a1645ae95b11oo 
                });
            });
        }
        

        【讨论】:

        • 请提供一些上下文。为什么这能解决问题?该功能应该去哪里?
        猜你喜欢
        • 1970-01-01
        • 2015-05-27
        • 2020-05-18
        • 2013-02-04
        • 2021-07-03
        • 1970-01-01
        • 2013-08-07
        • 2019-07-08
        • 2020-02-25
        相关资源
        最近更新 更多