node.js - Node/Express 好的错误处理方法?
问题描述
我有几个 mongoose route api 函数,我想知道错误处理的最佳方法是什么。下面是一个示例函数。在第一部分,我正在做一些猫鼬数据库查询,然后我用 exec 执行异步函数,然后我捕获任何错误,否则我正在进一步处理数据。
exports.getStornoData = function(req,res,next) {
Produkt.aggregate([
{
"$unwind":"$DemonstratorWerte"
},
{
$match: {
"DemonstratorWerte.Demonstrator":+req.params.demo_id, "DemonstratorWerte.RstorniertDemo.B":true
}
},...
]).exec(function(err, result) {
if (err) {
next(err);
res.status('404').send();
}
else {
//process data...
res.locals.stornierungen = stornierungenArray;
next();
}
})
}
这种错误处理方法是否可以接受?如何捕获大多数错误并在不影响用户体验的地方输出(或收集)它们?
if (err) {
next(err);
res.status('404').send();
}
并且这对 next(err) 是否正确并在此后通过方法链接发送 404 的状态?
解决方案
请参阅快速错误处理文档。
您应该定义自己的“自定义”错误处理中间件,而不是在您自己的中间件函数中返回 404:
function errorHandler (err, req, res, next) {
// Decide what to return to client here based on type of error.
}
确保在其他 app.use() 和路由调用之后最后定义错误处理中间件。
推荐阅读
- grid - qliksense 中的响应式网格在小部件扩展中不起作用
- python - 使用 Accurate Scheduler 模拟时间序列事件
- java - 具有水平滚动标题的 HeaderListView
- pinterest - 使用 Pinterest Marketing api 获取所有实体?
- java - BigInt 对象的“add”方法异常
- r - 长格式的时间序列数据,合并特定行时间点,同时忽略每个参与者的其他时间点
- python - Visual Studio Code 无法正确引用虚拟环境中的包
- ads - 在华为快应用上请求原生广告时出现“字符串错误”
- google-apps-script - 使用脚本在 Google 表格中发送一张表格不起作用
- python - 使用 keras 进行 RNN 的三元组网络