【发布时间】:2018-09-18 23:18:49
【问题描述】:
当jobs为null时,错误被处理,但在它继续到promise链之后。当出现错误时我如何打破promise链?我使用默认的快速错误处理程序。
search.route('/:job/:lng/:lat')
.get((req, res, next) => {
Jobs.findOne({"names":req.params.job})
.then((job) => {
if(!job){
err = new Error("Job "+req.params.job+" doesnt exist...Will look on it");
err.status = 404;
return next(err);
}
else{
return(job.id);
}
}, (err) => next(err))
.then((jobId) => {
return(
Professionals.aggregate([
{ "$geoNear": {
"near": {
"type": "Point",
"coordinates": [Number(req.params.lng),Number(req.params.lat)]
},
"distanceField": "distance",
"spherical": true,
"maxDistance": maxDistance
}}]
)
);
}, (err) => next(err))
.then((pros) => {
for(i=0;i <= pros.length -1;i++){
if(pros[i].distance > pros[i].location.radius ){
pros.splice(i,1);
}
}
res.statusCode = 200;
res.setHeader('Content-Type', 'application/json');
res.json(pros);
}, (err) => next(err))
.catch((err) => next(err));
});
提前致谢!!
【问题讨论】:
-
您不应将
(err) => next(err)传递给每个then回调。最后捕获一次错误。
标签: node.js express mongoose promise