Node.js axios.all的get请求中有多个url,如何将response.data与其相应的url对象匹配?
我正在建立一个用于工作的工具。基本上,我上传一个csv来提取细节,这些细节将作为axios get请求中的参数 我在axios.all中使用了多个url,我的问题是无法将响应数据与该特定url的每个对象相匹配。下面是详细的代码片段。我希望我在下面已经说得够清楚了,但这与一次大量请求多个URL以及接收响应数据有关。问题在于将响应数据与调用它的正确url进行匹配 我们开始吧……首先,我正在映射从外部csv文件上载的车辆数据数组。”resultsArray'是我的数组,它包含年份、品牌、型号、修剪、价格、定位原始发布的url以及车辆的位置Node.js axios.all的get请求中有多个url,如何将response.data与其相应的url对象匹配?,node.js,api,express,axios,Node.js,Api,Express,Axios,我正在建立一个用于工作的工具。基本上,我上传一个csv来提取细节,这些细节将作为axios get请求中的参数 我在axios.all中使用了多个url,我的问题是无法将响应数据与该特定url的每个对象相匹配。下面是详细的代码片段。我希望我在下面已经说得够清楚了,但这与一次大量请求多个URL以及接收响应数据有关。问题在于将响应数据与调用它的正确url进行匹配 我们开始吧……首先,我正在映射从外部csv文件上载的车辆数据数组。”resultsArray'是我的数组,它包含年份、品牌、型号、修剪、价
let vehicle_specs = resultsArray.map(function(d, index) {
let values = {
year: d['Title_name'].split(' ')[0], // Iterate with bracket notation
make: d['Title_name'].split(' ')[1],
model: d['Title_name'].split(' ')[2],
trim: d['Title_name'].split(' ')[3],
price: d['Title_Price'],
cl_url: d['Title_Price_url'],
cl_location: d['Title_Location'],
}
return values;
});
let Vehicle = function(year, make, model, trim, price, url, cl_url, cl_location) {
this.year = year;
this.make = make;
this.model = model;
this.trim = trim;
this.price = price;
this.url = url;
this.cl_url = cl_url;
this.cl_location = cl_location;
}
我使用new关键字创建车辆的对象
let vehicle_specs = resultsArray.map(function(d, index) {
let values = {
year: d['Title_name'].split(' ')[0], // Iterate with bracket notation
make: d['Title_name'].split(' ')[1],
model: d['Title_name'].split(' ')[2],
trim: d['Title_name'].split(' ')[3],
price: d['Title_Price'],
cl_url: d['Title_Price_url'],
cl_location: d['Title_Location'],
}
return values;
});
let Vehicle = function(year, make, model, trim, price, url, cl_url, cl_location) {
this.year = year;
this.make = make;
this.model = model;
this.trim = trim;
this.price = price;
this.url = url;
this.cl_url = cl_url;
this.cl_location = cl_location;
}
然后,我使用车辆的新实例构建对象,并根据需要返回每个车辆
let vehicle_data = vehicle_specs.map(function(s) {
let url = `http://api.marketcheck.com/v2/stats/car?api_key={}&ymm=${s.year}|${s.make}|${s.model}`;
let new_vehicle = new Vehicle(`${s.year}`, `${s.make}`, `${s.model}`, `${s.trim}`, `${s.price}`, `${url}`, `${s.cl_url}`, `${s.cl_location}`);
return new_vehicle;
});
我在下面的代码片段中提取URL,并使用axios.all从每个URL请求数据
let urls = vehicle_data.map(function(m) {
return m.url;
})
let options = {
'method': 'GET',
'headers': {
'Host': 'marketcheck-prod.apigee.net'
}
};
axios.all(urls.map(url => {
request(url, options, function (error, response, body) {
if(error) {
console.log(error);
} else {
console.log(response);
}
});
}))
我的问题:
我正在使用第三方API(Marcketcheck)-保存车辆上的数据
返回响应数据(请参见下面的示例。这是一个url的数据)
我不知道如何将每个响应数据与该特定url的vehicle对象相匹配
例如,如果我从vehicle对象请求3个URL。让我们给他们起个名字:
let requests = urls.map((url) => {
return axios.get(url, {
headers: {
'Host': 'marketcheck-prod.apigee.net'
}
});
});
Promise.all(requests).then((responces) => {
console.log(responces);
}).catch((err) => {
console.log(err)
});