Merge pull request #21 from Getable/better-error
Fix a bug in error parsing
This commit is contained in:
commit
3dfa72ddee
20
src/error.js
20
src/error.js
@ -8,11 +8,20 @@ export default (target, key, descriptor) => {
|
|||||||
await fn(request, reply);
|
await fn(request, reply);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
if (e.original) {
|
if (e.original) {
|
||||||
const { code, detail } = e.original;
|
const { code, detail, hint } = e.original;
|
||||||
|
let error;
|
||||||
|
|
||||||
// pg error codes https://www.postgresql.org/docs/9.5/static/errcodes-appendix.html
|
// pg error codes https://www.postgresql.org/docs/9.5/static/errcodes-appendix.html
|
||||||
if (code && (code.startsWith('22') || code.startsWith('23'))) {
|
if (code && (code.startsWith('22') || code.startsWith('23'))) {
|
||||||
const error = Boom.wrap(e, 406);
|
error = Boom.wrap(e, 406);
|
||||||
|
} else if (code && (code.startsWith('42'))) {
|
||||||
|
error = Boom.wrap(e, 422);
|
||||||
|
// TODO: we could get better at parse postgres error codes
|
||||||
|
} else {
|
||||||
|
// use a 502 error code since the issue is upstream with postgres, not
|
||||||
|
// this server
|
||||||
|
error = Boom.wrap(e, 502);
|
||||||
|
}
|
||||||
|
|
||||||
// detail tends to be more specific information. So, if we have it, use.
|
// detail tends to be more specific information. So, if we have it, use.
|
||||||
if (detail) {
|
if (detail) {
|
||||||
@ -20,8 +29,13 @@ export default (target, key, descriptor) => {
|
|||||||
error.reformat();
|
error.reformat();
|
||||||
}
|
}
|
||||||
|
|
||||||
reply(error);
|
// hint might provide useful information about how to fix the problem
|
||||||
|
if (hint) {
|
||||||
|
error.message += ` Hint: ${hint}`;
|
||||||
|
error.reformat();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
reply(error);
|
||||||
} else if (!e.isBoom) {
|
} else if (!e.isBoom) {
|
||||||
const { message } = e;
|
const { message } = e;
|
||||||
let err;
|
let err;
|
||||||
|
Loading…
Reference in New Issue
Block a user