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

Trying to cleanup a Nested Promise Chain in Node.js with Bookshelf.js

我的代码如下所示:

                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));
                });

现在,在上面的代码中,我必须单独捕获每个承诺。有没有办法将它们链接起来,这样错误就可以冒出来,而不必单独捕获每个 promise?

更新

            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));
            });

Promise 错误会自动冒出;你什么都不用做。
只需删除链末尾以外的所有错误处理程序。

有关错误处理的更详细指南,请参阅 my blog