尝试使用Bookshelf.js清理Node.js中的嵌套Promise Chain

这是我的代码看起来像:

return request.app.currentProject().then(function(project) { return project.prs().query({ where: {id: request.params.prId} }).fetchOne().then(function(pr) { if (!pr) { return reply(Boom.notFound()); } pr.destroy().then(function(model) { return reply().code(204); }).catch(function(err) { return reply(Boom.badRequest(err)); }); }).catch(function(err) { return reply(Boom.badRequest(err)); }); }).catch(function(err) { return reply(Boom.badRequest(err)); }); 

现在,在上面的代码中,我必须逐个捕获每个承诺。 无论如何要把它们连锁起来,这样错误就不会一个一个地抓住每一个承诺了。

更新

  return request.app.currentProject().then(function(project) { return project.prs().query({ where: {id: request.params.prId} }).fetchOne(); }).then(function(pr) { return pr.destroy(); }).catch(function(err) { return reply(Boom.badRequest(err)); }); 

承诺错误自动冒出来; 你不需要做任何事情。
只要除去链末尾的所有error handling程序。

有关error handling的更详细指导,请参阅我的博客 。