在API(路由)调用中,我希望有3个猫鼬查询,然后将结果合并以形成响应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完成
答案 0 :(得分:3)
如果您使用的是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)})
答案 1 :(得分:0)
您必须建立学生,教师和员工模型
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。