Error handling 处理ExpressJS和MongoDB时出错

Error handling 处理ExpressJS和MongoDB时出错,error-handling,express,mongoose,Error Handling,Express,Mongoose,ExpressJS和Mongoose中建议的错误处理方式是什么 app.get('/', function(req, res) { Subjects.find({}, function(err, subjects) { if (err) { return res.json(err); } res.render('list', {subjects: subjects}); }); }); 我刚刚用json返

ExpressJS和Mongoose中建议的错误处理方式是什么

app.get('/', function(req, res) {
    Subjects.find({}, function(err, subjects) {
        if (err) {
            return res.json(err);
        }

        res.render('list', {subjects: subjects});
    });
});
我刚刚用json返回了错误。有什么建议吗?谢谢

这取决于错误是什么,但我通常会通过
res.redirect
重定向到一个“错误”url,并提供错误的详细信息

您可以测试错误的详细信息,并重新运行查询(当然取决于错误是什么),但通常如果回调抛出错误,它是终端,所以记录它,重定向,并以一种好的方式通知用户

(当然,也可以返回JSON并在客户端处理响应,而无需重定向)

编辑

根据Paul的评论-
我无意将错误的确切细节返回给用户。

简单地说“数据库错误”或类似的内容更合适,具体取决于错误是什么。

同时,您可以对错误进行控制台记录,以便管理员可以查看这些错误或将其插入服务器上的文本文件中。告诉最终用户有关错误的详细信息可能会适得其反。一些可能是攻击者,然后他们可能会学到一些有用的东西。但大多数用户在遇到错误时,不会一字不差地复制错误并提交详细的错误报告。他们只是太忙和/或不知道如何精确地完成任务。期望值也更高,事情应该是正常的,这不是他们的工作。在哪里可以找到MongoDB中不同错误类型的全面解释?