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, puis
NewData code> après? Cela vous fera savoir où vous perdez des données, que ce soit dans la recherche ou la carte
Déplacer
var colnamearray1 = {}; code> dans la carte