Je fais une demande asynchrone à une base de données, puis en exécutant une boucle sur les données résultantes, mais je n'obtiens que la dernière valeur lors de l'envoi d'une réponse au front-end en réponse Je reçois juste les données du dernier index. Veuillez conseiller comment je peux gérer cette demande asynchrone p> p>
3 Réponses :
Si vous voulez toutes les lignes, vous devez appuyer sur chaque objet que vous pouvez créer dans un tableau. Dans le code ci-dessus, vous écrasez sur le même objet.
Essayez de mettre à jour le code ci-dessous: P>
routes.post('/data/qualitative/bivariate', async (req, res)=>{
const { colName1, colName2} = req.body;
var colNameObj1={};
var colNameArray1={};
const dataList = [] // Create a empty array
colNameObj1[colName1]=1;
colNameObj1[colName2]=1;
colNameObj1['_id']=0;
//requesting data from database
const data= await dataModel.find({}, colNameObj1);
//filtering the data
data.forEach( (item)=>{
colNameArray1['x']= item[colName1];
colNameArray1['y']= item[colName2];
dataList.push(colNameArray1) // Push to the array
})
//in response i am getting just the data from the last index
res.json(dataList)
})
Pensez à utiliser un pourach si vous retournez de la carte.
Vous devez déclarer colnamearray1 code> à l'intérieur de la fonction Carte:
J'ai trouvé le problème et cela n'a rien à voir avec la demande asynchrone et comme mentionné ci-dessus sa confirmée que je écrase l'objet. Clonage de l'objet à l'aide de la propagation {... obj} a résolu le problème. Merci pour l'aide. p>
Avez-vous déconnecté
DATA CODE> avant la mappage, puisNewData code> après? Cela vous fera savoir où vous perdez des données, que ce soit dans la recherche ou la carteDéplacer
var colnamearray1 = {}; code> dans la carte