【问题标题】:How to get a multiple result in mongoose and combine it in one single response如何在猫鼬中获得多个结果并将其组合在一个响应中
【发布时间】:2020-09-02 14:03:30
【问题描述】:

在 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 来完成

【问题讨论】:

    标签: javascript node.js mongodb express mongoose


    【解决方案1】:

    如果您使用的是async-await,请尝试如下方式,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)})
    

    【讨论】:

    • 非常感谢,这正是我要找的。干杯
    【解决方案2】:

    你必须建立学生、教师和员工模型

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

    其他两个型号相同。 之后,您必须编写函数查询。阅读有关queries 的更多信息。

    【讨论】:

    猜你喜欢
    • 2018-08-23
    • 2021-05-12
    • 1970-01-01
    • 2017-05-08
    • 2021-08-05
    • 2017-08-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多