簡體   English   中英

node.js 中來自數據庫的異步請求

[英]Asynchronous request from database in node.js

我正在向數據庫發出異步請求,然后對結果數據運行循環,但在向前端發送響應時我只得到最后一個值

routes.post('/data/qualitative/bivariate', async (req, res)=>{
    const { colName1, colName2} = req.body;
    var colNameObj1={};
    var colNameArray1={};
    colNameObj1[colName1]=1;
    colNameObj1[colName2]=1;
    colNameObj1['_id']=0;

    //requesting data from database
    const data= await dataModel.find({}, colNameObj1);

    //filtering the data
    const newData= data.map( (item)=>{
        colNameArray1['x']=  item[colName1];
        colNameArray1['y']=  item[colName2];
        return colNameArray1
    })

    //in response i am getting just the data from the last index
    res.json(newData)
})

作為回應,我只從最后一個索引中獲取數據。 請告知我如何處理這個異步請求

如果您想要所有行,那么您應該將您可以創建的每個對象推送到一個數組中。 在上面的代碼中,您覆蓋了同一個對象。

嘗試將代碼更新為以下內容:

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

您必須在 map 函數中聲明colNameArray1

routes.post('/data/qualitative/bivariate', async (req, res)=>{
    const { colName1, colName2} = req.body;
    var colNameObj1={};
    colNameObj1[colName1]=1;
    colNameObj1[colName2]=1;
    colNameObj1['_id']=0;

    //requesting data from database
    const data= await dataModel.find({}, colNameObj1);

    //filtering the data
    const newData= data.map( (item)=>{
        var colNameArray1={};
        colNameArray1['x']=  item[colName1];
        colNameArray1['y']=  item[colName2];
        return colNameArray1
    })

    //in response i am getting just the data from the last index
    res.json(newData)
})

我發現了這個問題,它與異步請求無關,如上所述,它確認我正在覆蓋對象。 使用 spread {... obj} 克隆對象已經解決了這個問題。 感謝幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM