我的 express 和寄送错误有问题。
我试图以最好的方式来处理错误,并在我的应用程序中创建一种标准的方式来执行此操作。
但是,我面临一个问题:
validate(req.body)
.catch(e => next(new APIError(400, e)))
.then(validatedbody => searchdatabase(validatedbody))
.then(dbResult => validate(dbResult))
.catch(e => next(new APIError(500, e)))
// results from db should always be valid
.then(validatedDbResult => res.json(validatedDbResult))
如果主体是错误的,我们应该停止并发送错误,并且错误将使用错误处理中间件发送,但是由于Promise的工作方式不佳,它将继续进行下一步(在数据库中搜索)。
我该怎么办 ?
我是否首先正确地处理了错误?
非常感谢你,
吉尔索
最佳答案
只需重新抛出错误,并仅在链的最末端进行处理即可:
validate(req.body)
.catch(e => { throw new APIError(400, e); })
.then(validatedbody =>
searchdatabase(validatedbody)
.then(validate)
.catch(e => { throw new APIError(500, e); })
)
.then(validatedDbResult => res.json(validatedDbResult),
next)
关于node.js - 在Promise中进行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44186553/