首页 > 解决方案 > 有没有一种优雅的方式来呈现两组猫鼬文档?

问题描述

我有一个网页视图,需要两组 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,
});

但是,由于猫鼬查询的异步性质,我不确定如何执行此操作。

有什么建议么?

标签: node.jsexpressmongoose

解决方案


使用异步可能会有所帮助。

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
    }
});

推荐阅读