如何在节点js中将所有对象移动到数组中并使用res.json发送

问题描述

伙计们正在尝试遍历一个数组,以从另一个信息表中使用节点js和mongodb获取特定用户的所有用户数据,因此该数组的每个元素都可以从另一个表返回数据。到目前为止,如果我运行我的代码和console.log,它将返回所有用户数据,但是如果我使用res.json,它将仅返回1个数据,请问如何使用res.json返回所有数据?我可以将所有对象移入只是1个数组,如果是的话,我该怎么解决

我的代码

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

我的控制台答案

{ url: 'eyaF8Pq6SP8e7YMe48aY',course: 'csc2101' }
{ url: 'c6d8KGfo6WO67QRC0Dq8',course: 'csc2104' }

我的res.json答案

{ url: 'eyaF8Pq6SP8e7YMe48aY',course: 'csc2101' }

解决方法

我建议您将结果保存到数组中,并在最后返回数组。尝试使用try catch块来捕获异步调用错误。

 const {dept,college,level} = req.body
    const responseArray = [];
let result=[];
 
        for (let index = 0; index < res.GetUserDT.coursesHandled.length; index++) {
           responseArray.push( res.GetUserDT.coursesHandled[index].courseCode); 
        }
try{
        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){
        result.push({url:getActiveClass.address,course:getActiveClass.school.course})
        }
        })
return res.json(result);
}
catch(error){
            res.status(404).json('nothing')

}