繁体   English   中英

如何使用 Axios 在 Node.js 中过滤 JSON 数据?

[英]How can I filter a JSON data in Node.js using Axios?

我是新手后端开发人员,我正在尝试使用 Node.js 构建 REST API,以便从 Pipedrive 中赢得交易。 我已经有一个使用 Axios 获取所有交易的功能,它工作得很好,但我需要过滤它的响应以只向我发送状态为“获胜”的那些。 我在 Pipedrive 中创建了一些具有不同状态的交易,例如“获胜”、“丢失”和“开放”。 我有一个函数“getAllDeals”,可以将所有这些以 JSON 格式发送给我。 我试图以许多不同的方式适应它,但没有成功。

我在我的路线/交易中调用这个函数:

router.get('/deals', controller.getAllDeals)

这是我的功能,它正在工作,以获得所有交易:

 async getAllDeals(_, res){

        try {
            const response = await axios.get(`${PIPE_URL}?api_token=${PIPE_TOKEN}`)
            return res.json(response.data)
        }
        catch (err) {
            console.log(err)
        }
    }

这是我最后一次尝试过滤其响应数据:

async getAllDeals(_, res){

        try {
            const response = await axios.get(`${PIPE_URL}?api_token=${PIPE_TOKEN}`)
            const deals = res.json(response.data)
            const dealsWon = response.where(deals, {status: "won"})
            return dealsWon
        }
        catch (err) {
            console.log(err)
        }
    }

我希望有一个简单的方法来做到这一点。

不知道什么是response.where 您可以使用lodash.where模块来帮助您解决这个问题。 取决于响应结构,您可以使用lodash.where来提取您需要的相关数据。 所以你的代码应该是这样的:

const where = require("lodash.where");

async getAllDeals(_, res){

    try {
        const response = await axios.get(`${PIPE_URL}?api_token=${PIPE_TOKEN}`)
        const deals = res.json(response.data)
        const dealsWon = where(deals, {status: "won"})
        return dealsWon
    }
    catch (err) {
        console.log(err)
    }
}

当然不要忘记安装模块npm i lodash.where

您可以使用Array.prototype.filter根据您的需要过滤您的交易。 像这样的事情应该有效。

const dealsWon = deals.filter(deal => deal.status === "won")

我在 Pipedrive 文档中读到过 satus 是一个查询参数,它将通过提供的特定状态过滤交易: ?open=Open , ?won=Won , ?lost=Lost

我以这种方式在我的 axios 请求中插入查询:

const response = await axios.get(`${PIPE_URL}?status=Won&api_token=${PIPE_TOKEN}`)

在我这样做之后,我的请求只返回了“赢得”状态的交易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM