javascript - 如何在猫鼬中获得多个结果并将其组合在一个响应中
问题描述
在 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 来完成
解决方案
如果您使用的是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)})
推荐阅读
- amazon-web-services - AWS Lambda 共享层访问被拒绝错误
- r - 以 HTML 格式保存 R 图表的列表
- apache-spark - 在任何给定的 spark 阶段,您如何找出导致 spark 任务的高 GC 时间的确切原因?
- xtrf - 无法使用 XTRF 沙盒 REST API 创建项目
- gcc - gcc:如何在函数入口中保存所有使用的寄存器
- java - 使用java连接数据库时无法从静态变量错误中引用非静态变量
- reactjs - 您如何在 REACT 前端应用程序中模拟预期的 REST API 调用以进行开发?
- notion-api - 有没有办法获取给定数据库的列表长度?
- java - 在公共方法中运行 Java 哨兵控制的 do-while 循环
- tensorflow - 张量流概率的可训练先验