I am looking to make a GET call over a few parameters (with request.js) , combine the result and return it as my own GET API (with express.js) - like so:
app.get("myapi", (req. res) => {
parameters = ["a", "b", "c"]
let result = {}
parameters.forEach(param => {
const uri = `https://api.exampleApi.com/?parameter=${param}`
request.get(uri, (error, response, body) => {
result[param] = body.data;
});
});
res.json(result);
});
However, the result returned for this is empty {}
. How can I combine multiple calls?
EDIT: Here is my new code with an array of Promises.
app.get("/api/v1/leagues/games", (req, res) => {
const promiseRequest = (sport, region, mkt) => {
return new Promise(resolve => {
const theOddsApiUrl = `https://api.the-odds-api.com/v3/odds/?apiKey=${functions.config().theoddsapi.key}&sport=${sport}®ion=${region}&mkt=${mkt}`;
request.get(theOddsApiUrl, (error, response, body) => {
if (body) {
resolve(body)
}
});
})
}
const makeRequest = (sport, mkt) => {
let allRegionsOdds = {};
Promise.all([
promiseRequest(sport, 'uk', mkt),
promiseRequest(sport, 'us', mkt),
promiseRequest(sport, 'au', mkt)
]).then(body => {
return allRegionsOdds[region] = body;
}).catch();
}
const response = makeRequest(req.query.sport, req.query.mkt);
res.json(response);
});