CenterForDigitalHumanities / CenterForDigitalHumanities/rerum_server_nodejs
Standardize route error handling to use createExpressError
- Dominant language
- JavaScript
- Stars
- 3
- Forks
- 6
- Avg merge
- 1h 25m
- Merged PRs (30d)
- 3
Description
## Description
The POST handlers in the route files use an unconventional pattern of passing the `res` object directly to `next()` as the error argument:
```javascript
res.statusMessage = 'Improper request method for updating, please use PATCH to add new keys to this object.'
res.status(405)
next(res)
```
This works because `rest.messenger` reads `err.statusMessage` and `err.statusCode` from whatever object is passed, and the `res` object happens to have those properties. However, it creates a confusing situation where `err === res` inside the error handler.
The rest of the codebase uses `next(utils.createExpressError({...}))` for error handling (see `rest.js`), which is the standard Express convention.
Standardize these routes to use the same `createExpressError` pattern as the rest of the codebase:
```javascript
if (!rest.checkPatchOverrideSupport(req, res)) {
return next(utils.createExpressError({
statusCode: 405,
statusMessage: 'Improper request method for updating, please use PATCH to add new keys to this object.'
}))
}
controller.patchSet(req, res, next)
```
## Context
Found during static review of #206. Out of scope for that PR since it's a pre-existing pattern.
Contributor guide
Assessment
This issue has not been assessed yet.