gpt4 book ai didi

javascript - Resitify 的集中错误处理

转载 作者:太空宇宙 更新时间:2023-11-04 00:50:16 24 4
gpt4 key购买 nike

我在 Restify 应用程序中设置集中式错误处理时遇到问题。我想捕获某些 Mongo 错误,例如“E11000 重复键错误”,然后将它们映射到 Restify ConflictError。

如果我只是让错误从路由中的 Mongo 调用中冒出来,客户端会收到 500 错误。

我想我应该捕获InternalServerError,但是下面的处理程序永远不会被调用:

app.on('InternalServerError', function (req, res, err, cb) {
console.log('++++++++++++++++', err);
return cb(err);
});

我想我可以使用快速方法:

app.use(function (err, req, res, next){...

但是 Restify 处理程序似乎不接受错误参数。搜索完所有常见的地方后,我被难住了。看来我的第一种方法应该已经奏效了。

最佳答案

这可能对你有用。在您的 app.js 文件中设置一个 Bunyan 记录器...

var bunyan = require('bunyan');
var log = new bunyan({
name: 'my_api',
streams: [
{
path: './error.log',
level: 'warn'
}
],
serializers: {req: restify.bunyan.serializers.req},
src: false
});

var server = restify.createServer({
log: log
});

然后在你的 Controller 中做这样的事情......

var restify = require('restify');

try {
Model.findAll().then(function(vals){
res.send(vals);
next();
});
}
catch(e) {
req.log.error({req_id: req.id()}, 'Error attempting find.');
res.send(409, new restify.ConflictError("Problem executing search."));
next();
}

关于javascript - Resitify 的集中错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32926622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com