Javascript node.js中来自数据库的异步请求

Javascript node.js中来自数据库的异步请求,javascript,node.js,mongoose,Javascript,Node.js,Mongoose,我向数据库发出一个异步请求,然后对结果数据运行一个循环,但在向前端发送响应时,我只得到最后一个值 routes.post('/data/qualitative/bivariate', async (req, res)=>{ const { colName1, colName2} = req.body; var colNameObj1={}; var colNameArray1={}; colNameObj1[colName1]=1; colNameO

我向数据库发出一个异步请求,然后对结果数据运行一个循环,但在向前端发送响应时,我只得到最后一个值

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/qualificial/bivariate',异步(req,res)=>{
const{colName1,colName2}=req.body;
var colNameObj1={};
colNameObj1[colName1]=1;
colNameObj1[colName2]=1;
colNameObj1[''u id']=0;
//从数据库请求数据
const data=await dataModel.find({},colNameObj1);
//过滤数据
const newData=data.map((项)=>{
var colNameArray1={};
colNameArray1['x']=项[colName1];
colNameArray1['y']=项[colName2];
返回colNameArray1
})
//作为回应,我只是从上一个索引中获取数据
res.json(newData)
})

我发现了问题,它与异步请求无关,如上所述,它确认我正在覆盖对象。使用spread{…obj}克隆对象解决了这个问题。谢谢你的帮助

您是否在映射之前注销了
data
,然后在映射之后注销了
newData
?这将让您知道丢失数据的位置,无论是在find还是mapMove
var colNameArray1={}