我有一个API,使用swagger与node.js上的express集成,并定义了以下资源。在检查(!req.params.id)时抛出的swagger错误被swagger的默认错误处理程序捕获。从mongoDB删除调用的回调函数中抛出的错误没有被捕获,给我以下错误。该错误似乎与回调函数的作用域/顺序有关,作为一个新手,我希望能得到如何正确处理此问题的建议,同时保持异步性。-谢谢
exports.remove = {
'spec' : {
"collapsed...for...brevity..." : "...",
"params" : [ {
"paramType" : "path",
"name" : "id",
"collapsed...for...brevity..." : "...",
}],
"errorResponses" : [ swe.notFound('id'), swe.invalid('id') ],
"nickname" : "remove"
},
'action' : function(req, res) {
if (!req.params.id) {
throw swe.invalid('id'); // THIS ERROR IS CAUGHT
}
req.coll.remove({_id : req.coll.id(req.params.id)}, function(e, result) {
if (e) {
throw swe.invalid('collection'); // THIS ERROR IS NOT CAUGHT
}
res.send({msg : 'success'});
});
}
};