0
votes

Demande asynchrone de la base de données dans Node.js

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 xxx

en réponse Je reçois juste les données du dernier index. Veuillez conseiller comment je peux gérer cette demande asynchrone


2 commentaires

Avez-vous déconnecté DATA avant la mappage, puis NewData 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 = {}; dans la carte


3 Réponses :


0
votes

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)
})


1 commentaires

Pensez à utiliser un pourach si vous retournez de la carte.



0
votes

Vous devez déclarer colnamearray1 à l'intérieur de la fonction Carte: xxx


0 commentaires

0
votes

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.


0 commentaires