Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用node.js request()循环数组_Javascript_Arrays_Node.js_Express_Options - Fatal编程技术网

Javascript 如何使用node.js request()循环数组

Javascript 如何使用node.js request()循环数组,javascript,arrays,node.js,express,options,Javascript,Arrays,Node.js,Express,Options,我从将单个值传递到节点API,到传递多个值,API停止发送响应 字段的单个值示例: tracking: "123", // Only one tracking number carrier: "usps" // Only one carrier code 字段的多个值示例: tracking: [ '9361289691090998780363', '784644233417' ], carrier: [ 'usps', 'fedex' ] 我想我需要添加一些循环,但是我不知道怎么做,也不知

我从将单个值传递到节点API,到传递多个值,API停止发送响应

字段的单个值示例:

tracking: "123", // Only one tracking number
carrier: "usps" // Only one carrier code
字段的多个值示例:

tracking: [ '9361289691090998780363', '784644233417' ],
carrier: [ 'usps', 'fedex' ]
我想我需要添加一些循环,但是我不知道怎么做,也不知道应该用什么术语来查找。这与aync有关吗?我迷路了

request(options, function (error, response, body){});
这是我的密码。如能提供任何帮助/补充信息,以了解我做错了什么,将不胜感激

html.js

controller.js


从你的控制器上,我可以看到,一旦你收到请求,你就会发送回响应。如何再次发送响应

我已经评论了你的res.send'ok'并且它可以工作

app.get("/api/tracking/retrieve", (req, res) => {
    var carrier = req.query.carrier;
    var tracking = req.query.tracking;
    console.log('carrier array', carrier);
    console.log('tracking array', tracking);
    var options = {
        method: "GET",
        url: 'https://api.example.com/v1/tracking',
        qs: { carrier_code: carrier, tracking_number: tracking },
        headers:
            {
                'api-key': process.env.SECRET_KEY_SE,
                'accept': 'application/json'
            }
    }
    console.log("Url: ", req.url);
    console.log("Query: ", req.query);
    // res.send("ok"); <--
    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log('BODY', body)
            var trackingData = JSON.parse(body)
            console.log('trackingData: ', trackingData);
            table = 'tracking_table';
            col = [
                'user_id',
                'tracking_number',
                'carrier_code',
            ];
            val = [
                user_id,
                trackingData.tracking_number,
                options.qs.carrier_code,
            ];
            main.create(table, col, val, function (data) {
                res.json({
                    id: data.insertId,
                    user_id: user_id,
                    tracking_number: data.tracking_number,
                    carrier_code: data.carrier_code,
                });
            })
        }
    })
});

请提供有关API的更多详细信息。如果您的API只支持一个运营商代码或跟踪号码,您可能需要对每个组合进行排队。我将联系该公司并询问他们。在我看来,您在进行API调用之前发送了一个响应,这可能是一个问题。@TravisDelly我更新了代码以注释掉//res.send'ok;。这就是您所引用的吗?是的,因此,如果您需要循环网络调用或同步function,您需要使用promise.all,您需要使用一个映射,将promises返回到数组中,然后调用promise.allarrayofpromises,并在中。然后您将发送json响应,下面是有关promise.all的更多信息。此修复程序消除了我在前端遇到的一个小错误,但它没有提供我正在调用的API ie的响应:
app.get("/api/tracking/retrieve", (req, res) => {

    var carrier = req.query.carrier;
    var tracking = req.query.tracking;

    console.log('carrier array', carrier);
    console.log('tracking array', tracking);

    var options = {
        method: "GET",
        url: 'https://api.example.com/v1/tracking',
        qs: { carrier_code: carrier, tracking_number: tracking },
        headers:
            {
                'api-key': process.env.SECRET_KEY_SE,
                'accept': 'application/json'
            }
    }

    console.log("Url: ", req.url);
    console.log("Query: ", req.query);
    // res.send("ok");

    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log('BODY', body)

            var trackingData = JSON.parse(body)
            console.log('trackingData: ', trackingData);
            table = 'tracking_table';
            col = [
                'user_id',
                'tracking_number',
                'carrier_code',
            ];

            val = [
                user_id,
                trackingData.tracking_number,
                options.qs.carrier_code,
            ];

            main.create(table, col, val, function (data) {
                res.json({
                    id: data.insertId,
                    user_id: user_id,
                    tracking_number: data.tracking_number,
                    carrier_code: data.carrier_code,
                });
            })
        }
    })

})
app.get("/api/tracking/retrieve", (req, res) => {
    var carrier = req.query.carrier;
    var tracking = req.query.tracking;
    console.log('carrier array', carrier);
    console.log('tracking array', tracking);
    var options = {
        method: "GET",
        url: 'https://api.example.com/v1/tracking',
        qs: { carrier_code: carrier, tracking_number: tracking },
        headers:
            {
                'api-key': process.env.SECRET_KEY_SE,
                'accept': 'application/json'
            }
    }
    console.log("Url: ", req.url);
    console.log("Query: ", req.query);
    // res.send("ok"); <--
    request(options, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log('BODY', body)
            var trackingData = JSON.parse(body)
            console.log('trackingData: ', trackingData);
            table = 'tracking_table';
            col = [
                'user_id',
                'tracking_number',
                'carrier_code',
            ];
            val = [
                user_id,
                trackingData.tracking_number,
                options.qs.carrier_code,
            ];
            main.create(table, col, val, function (data) {
                res.json({
                    id: data.insertId,
                    user_id: user_id,
                    tracking_number: data.tracking_number,
                    carrier_code: data.carrier_code,
                });
            })
        }
    })
});