Javascript 如何在mongoose中获得多个结果并将其组合到一个响应中
在一个API(Route)调用中,我希望有3个mongoose查询,然后组合结果以形成一个json响应 查询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
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)})
我指的是这些收藏中的总记录数。我知道如何计算文档数……但我希望能将结果结合起来,以便作出回应。非常感谢,这正是我要寻找的。干杯