Javascript 如何将所有对象移动到一个数组中,并在node js中使用res.json发送
嘿,伙计们,我正试图通过一个数组循环,使用节点js和mongodb从另一个信息表获取特定用户的所有用户数据,因此该数组的每个元素都可以从另一个表返回数据。到目前为止,如果我运行我的代码和console.log,它将返回所有用户数据,但如果我使用res.json,它只返回1个数据,请问我如何使用res.json返回所有数据?我可以将所有对象移动到仅1个数组中吗?如果是,请问我如何解决它 我的代码Javascript 如何将所有对象移动到一个数组中,并在node js中使用res.json发送,javascript,node.js,json,Javascript,Node.js,Json,嘿,伙计们,我正试图通过一个数组循环,使用节点js和mongodb从另一个信息表获取特定用户的所有用户数据,因此该数组的每个元素都可以从另一个表返回数据。到目前为止,如果我运行我的代码和console.log,它将返回所有用户数据,但如果我使用res.json,它只返回1个数据,请问我如何使用res.json返回所有数据?我可以将所有对象移动到仅1个数组中吗?如果是,请问我如何解决它 我的代码 //get students that offer the course and send link
//get students that offer the course and send link to them
router.get('/send/Link/:id',GetAllUserdata,async(req,res)=>{
const {dept,college,level} = req.body
const responseArray = [];
for (let index = 0; index < res.GetUserDT.coursesHandled.length; index++) {
responseArray.push( res.GetUserDT.coursesHandled[index].courseCode);
}
responseArray.map(async(course,i)=>{
const getActiveClass = await Class.findOne({'school.college':college,'school.department':dept,'school.level':level,'school.course':course,'type':'uploadclass',"expires":0})
if(getActiveClass){
console.log({url:getActiveClass.address,course:getActiveClass.school.course})
}else{
res.status(404).json('nothing')
}
})
})
我的res.json答案
{ url: 'eyaF8Pq6SP8e7YMe48aY', course: 'csc2101' }
{ url: 'c6d8KGfo6WO67QRC0Dq8', course: 'csc2104' }
{ url: 'eyaF8Pq6SP8e7YMe48aY', course: 'csc2101' }
我建议您将结果保存到数组中,并在最后返回数组。尝试使用try-catch块捕获异步调用错误
const{dept,college,level}=req.body
const responseArray=[];
让结果=[];
for(让index=0;index{
const getActiveClass=wait Class.findOne({'school.college':college,'school.department':dept,'school.level':level,'school.course':课程,'type':'uploadclass','expires:'0})
if(getActiveClass){
结果.推送({url:getActiveClass.address,课程:getActiveClass.school.course})
}
})
返回res.json(结果);
}
捕获(错误){
res.status(404.json)('nothing')
}
几个小时前一个非常类似的问题的答案:。从中,你可以看到如何解决这个问题。您的.map()
生成一系列承诺。您需要在该数组上使用Promise.all()
,以了解这些承诺何时完成.map()
本身不支持承诺。