Javascript 如何在mongoose中获得多个结果并将其组合到一个响应中

Javascript 如何在mongoose中获得多个结果并将其组合到一个响应中,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,在一个API(Route)调用中,我希望有3个mongoose查询,然后组合结果以形成一个json响应 查询 student .countDocuments ( {} ) .then(stundentNumber => { return stundentNumber }) teacher .countDocuments ( {} ) .then(teacherNumber => { return teacherNu

在一个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实现这一点?您必须构建学生、教师和员工模型

const mongoose = require("mongoose"),
{Schema} = mongoose,
  studentSchema = new Schema(
    {
      name: {
        first: {
          type: String,
          trim: true
        },
        last: {
          type: String,
          trim: true
        }
      },
      studentNumber: {
        type: Number,
        required: true,
        lowercase: true,
        unique: true
      },
    }
其他两个型号相同。
之后,您必须编写函数查询。阅读更多信息。

如果您使用的是
异步等待
,请尝试以下方法,这将帮助您并行执行所有操作:

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

我指的是这些收藏中的总记录数。我知道如何计算文档数……但我希望能将结果结合起来,以便作出回应。非常感谢,这正是我要寻找的。干杯