custom error handling mongoDB and typescript

Viewed 58

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;
};
0 Answers
Related