首页 > 解决方案 > 如何在猫鼬中获得多个结果并将其组合在一个响应中

问题描述

在 API(Route) 调用中,我希望有 3 个 mongoose 查询,然后组合结果以形成响应 json。

询问

student
  .countDocuments
  (
    {}
  )
  .then(stundentNumber => {
    return stundentNumber
  })

teacher
  .countDocuments
  (
    {}
  )
  .then(teacherNumber => {
    return teacherNumber;
  })

staff
  .countDocuments
  (
    {}
  )
  .then(staffNumber => {
    return staffNumber;
  });

期望的反应

res.json({
    teacher: teacherNumber,
    student: stundentNumber,
    staff: staffNumber
});

如何使用 nodejs/mongoose 来完成

标签: javascriptnode.jsmongodbexpressmongoose

解决方案


如果您使用的是async-await's,请尝试如下方式,其中Promise.all()将帮助您并行执行所有操作:

async function getCounts() {
    let [student,teacher,staff] = await Promise.all([student.countDocuments({}),teacher.countDocuments({}),staff.countDocuments({})]);
    return {student,teacher,staff};
}

/** call this function in main handler function where you get API call */
getCounts().then((data)=>{res.json(data)}).catch((err)=>{console.log(err)})

推荐阅读