node.js - 有没有一种优雅的方式来呈现两组猫鼬文档?
问题描述
我有一个网页视图,需要两组 mongoose 文档,一组用于“完成任务”,另一组用于“未完成任务”。
这是我当前的代码:
router.get('/', (req, res) => {
Task.find({'completed': false}) // Finding all incomplete tasks
.exec()
.then((incompleteTasks) => {
Task.find({'completed': true}) // Finding all complete tasks
.exec()
.then((completeTasks) => {
res.render('tasks/tasks', {
title: 'Tasks',
incompleteTasks: incompleteTasks,
completeTasks: completeTasks,
});
});
});
});
有没有办法让它更优雅?现在,还不错,但如果我不得不将我的任务分成多组,代码会变得非常混乱。
我想到的是使代码具有以下结构:
let incompleteTasks = /* Get INCOMPLETE tasks */
let completeTasks = /* Get COMPLETE tasks */
res.render('tasks/tasks', {
title: 'Tasks',
incompleteTasks: incompleteTasks,
completeTasks: completeTasks,
});
但是,由于猫鼬查询的异步性质,我不确定如何执行此操作。
有什么建议么?
解决方案
使用异步可能会有所帮助。
router.get('/', async (req, res) => {
try{
incompleteTasks = await Task.find({'completed': false}).exec();
completeTasks = await Task.find({'completed': true}).exec()
res.render('tasks/tasks', {
title: 'Tasks',
incompleteTasks: incompleteTasks,
completeTasks: completeTasks,
});
}
catch (e){
//handle your error here
}
});
推荐阅读
- javascript - 为什么在更新 DOM 元素的样式属性时对象传播失败但 Object.assign 成功?
- swift - 如何在避免依赖冲突的同时分离模块
- php - 如何创建查询以显示当前类别(课程)LearnDash 自定义中的课程?
- java - 我如何在 java 中为 ReadKey 使用 bets(if)
- java - JMH结果解读及算法复杂度
- python - 根据索引和列将两个熊猫数据框相乘
- database-design - 从 ERD 中的循环中删除冗余元素
- c# - 使用背景颜色格式化 excel 并上传到 Azure Blob
- javascript - 命名默认导出有什么好处?
- generics - 即使放弃第一次借用,“不能多次借用可变”