Spaces:
Runtime error
Runtime error
//handle duplicates | |
const handleDuplicateKeyError = (err, res) => { | |
const field = Object.keys(err.keyValue); | |
const code = 409; | |
const error = `An document with that ${field} already exists.`; | |
console.log('congrats you hit the duped keys error'); | |
res.status(code).send({ messages: error, fields: field }); | |
}; | |
//handle validation errors | |
const handleValidationError = (err, res) => { | |
console.log('congrats you hit the validation middleware'); | |
let errors = Object.values(err.errors).map((el) => el.message); | |
let fields = Object.values(err.errors).map((el) => el.path); | |
let code = 400; | |
if (errors.length > 1) { | |
const formattedErrors = errors.join(' '); | |
res.status(code).send({ messages: formattedErrors, fields: fields }); | |
} else { | |
res.status(code).send({ messages: errors, fields: fields }); | |
} | |
}; | |
// eslint-disable-next-line no-unused-vars | |
module.exports = (err, req, res, next) => { | |
try { | |
console.log('congrats you hit the error middleware'); | |
if (err.name === 'ValidationError') { | |
return (err = handleValidationError(err, res)); | |
} | |
if (err.code && err.code == 11000) { | |
return (err = handleDuplicateKeyError(err, res)); | |
} | |
} catch (err) { | |
res.status(500).send('An unknown error occurred.'); | |
} | |
}; | |