Requête axios imbriquées dans un endpoint de mon serveur
Bonjour,
dans mon serveur nodejs, j'ai une fonction qui doit appeler une API externe.
L'objectif est de 1) récupérer tous les items, 2) pour chaque item, récupérer des données d'historique supplémentaires en faisant une nouvelle requête axios.
Voila ce que j'essaie de faire
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
app.get('/api/items',async function(req, res) {
var url=`${API}/resources/items;
axios.get(url)
.then(response => {
var results = [];
response.data.entities.forEach(function(el){
var itemId = util.getJobId(el);
getHistory(itemId).then(res => function(res){
console.log(res);
Array.prototype.push.apply(el, res);
console.log(el)
results.push(el);
});
});
res.send(results);
})
.catch(error => {
console.log(error);
});
});
async function getHistory(uid) {
try {
var url_history=`${API}/resources/${uid}/history/`;
let res = await axios({
url: url_history,
method: 'get',
timeout: 8000,
headers: {
'Content-Type': 'application/json',
}
})
return res.data.entities[0]
}
catch (err) {
console.error(err);
}
} |
Pour chaque item, à l'aide de son id, je souhaite récupérer ces informations d'historique(donc au sein d'une boucle je fais des requêtes getHistory) et rajouter ces datas à l'element existant. Puis mettre tous les éléments dans un tableau results ( Ainsi pour chaque item j'aurai les données de base + les données de son historique)
Or au final, mon res.send(results) renvoie un tableau vide
Auriez vous une idée ??
Merci par avance