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还是mapMovevar colNameArray1={}如果您从地图返回,请考虑使用forEach。