Skip to content

Commit de5eac7

Browse files
aaqilnizdhmlau
authored andcommitted
fix: reading error code
Signed-off-by: Muhammad Aaqil <[email protected]>
1 parent 9512f15 commit de5eac7

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

lib/set-http-code.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,16 @@ const codes = {
2626
* add your SQL error to the correct HTTP code array above!
2727
*/
2828
module.exports = function(err) {
29+
let code = '';
30+
if (err && err.code) code = err.code;
2931
if (!err) {
3032
return;
3133
} else if (!(err instanceof Error)) {
3234
err = new Error(err); // Sucks that we weren't given an error object...
3335
}
3436
// Find error prefix
3537
const msg = err.message;
36-
const sqlError = msg.substring(0, msg.indexOf(':'));
38+
const sqlError = msg.substring(0, msg.indexOf(':')) || code;
3739

3840
for (const code in codes) {
3941
if (_.includes(codes[code], sqlError)) {

test/set-http-code.test.js

+12
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,18 @@ describe('setHttpCode', function() {
2929
});
3030
}
3131
});
32+
33+
it('should set statusCode from code', function() {
34+
let err = {
35+
message: 'Duplicate entry \'value\' for key \'key_name\'',
36+
code: 'ER_DUP_ENTRY',
37+
};
38+
err = setHttpCode(err);
39+
should.exist(err.statusCode);
40+
should(err instanceof Error);
41+
should.equal(err.statusCode, 422);
42+
});
43+
3244
it('should do nothing without error', function() {
3345
should.doesNotThrow(setHttpCode);
3446
});

0 commit comments

Comments
 (0)