I'm setting a restfulAPI with node.js and express. What I'm struggling is to send a custom error message depending of what error I receive from the try..catch in my controllers.
I'm creating a function that will take as an argument only mongoDB error such as empty fields - wrong username.... I can't figure out what type should be the parameter.
Here is the function:
interface errorFields {
emptyField: {
[name: string]: boolean;
};
wrongField: {
[name: string]: boolean | string;
};
}
export const handleFormError = (err: /*What type?*/) => {
let errorMessages: errorFields = {
emptyField: {},
wrongField: {},
};
const { emptyField, wrongField } = errorMessages;
if (!err) return;
if (err.code === 11000) {
let field = Object.keys(err.keyValue)[0];
wrongField[field] = true;
}
if (err.message.includes('required')) {
let requiredField = Object.keys(err.errors);
requiredField.forEach((item) => {
emptyField[item] = true;
});
}
if (err.message.includes('Validator')) {
wrongField.email = `Cet email n'est pas valide`;
}
return errorMessages;
};