Express/MongoDB-向数据库发送请求时,如何在try/catch块中使用res.render

Express/MongoDB-向数据库发送请求时,如何在try/catch块中使用res.render,mongodb,express,Mongodb,Express,我正在制作一个民意测验应用程序,其中一个路线是获取所有民意测验的GET请求 我所要做的就是将轮询传递给我的仪表板视图,如果没有轮询,我还想将错误传递给仪表板视图 我认为我当前的实现是错误的,因为如果没有轮询,dashboard视图将接收一个空数组,而不是错误 我很好奇在这种情况下最好的办法是什么 谢谢 router.get('/dashboard', isAuth, async (req, res) => { try { const polls = await Po

我正在制作一个民意测验应用程序,其中一个路线是获取所有民意测验的GET请求

我所要做的就是将轮询传递给我的仪表板视图,如果没有轮询,我还想将错误传递给仪表板视图

我认为我当前的实现是错误的,因为如果没有轮询,dashboard视图将接收一个空数组,而不是错误

我很好奇在这种情况下最好的办法是什么

谢谢

router.get('/dashboard', isAuth, async (req, res) => {
    try {
        const polls = await Poll.find().populate('user', ['name', 'id']);
        
        res.render('dashboard', {
            polls
        });
    } catch(err) {
        res.status(400);
        res.render('dashboard', {
            error: 'Could not find any polls'
        });
    }
});

如果
polls
为falsy/empty,则可以抛出错误。像这样:

const getType=element=>Object.prototype.toString.call(element);
//将此函数放在帮助文件中,并在整个源代码中使用它
常量isEmpty=元素=>{
如果(
//未定义
元素的类型==“未定义”||
//串
(元素类型=='string'&&element.trim().length==0)||
//空的
getType(元素)=='[object Null]'||
//反对
(getType(元素)=='[object]'&&!object.keys(元素).length)||
//排列
(getType(element)=='[对象数组]'&&&!element.length)
) {
返回true;
}
返回false;
}
路由器.get('/dashboard',isAuth,async(req,res)=>{
试一试{
const polls=wait Poll.find().populate('user',['name','id']);
如果(isEmpty(投票)){
抛出新错误(“找不到任何轮询”);
}
res.render('仪表板'{
民意测验
});
}捕捉(错误){
物质状态(400);
res.render('仪表板'{
错误:“找不到任何轮询”
});
}
});