错误处理ExpressJS和MongoDB

问题描述:

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

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和处理您回应客户端,没有重定向)

编辑

按照保罗的评论 -
我不是故意要返回准确向用户提供有关错误的详细信息。
只是“数据库错误”或类似的东西会更合适,这取决于错误是什么。

+0

与此同时,您可以console.log错误,以便管理员可以看到它们或将它们插入到服务器上的文本文件中。告诉最终用户有关错误的详细信息可能会适得其反。少数人可能是攻击者,然后他们可能会学到一些有用的东西。但是大多数遇到错误的用户不会逐字复制,并提交详细的错误报告。他们太忙了,或者不知道如何做到这一点。期望也更高,事情应该正常工作,这不是他们的工作。 – Paul