Skip to content

Commit

Permalink
Handling errors and avoiding duplicate category
Browse files Browse the repository at this point in the history
  • Loading branch information
pramit-marattha committed Jan 14, 2021
1 parent c9686aa commit ea20109
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 3 deletions.
5 changes: 3 additions & 2 deletions server/controllers/category.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const Category = require("../models/categorySchema");
const slugify = require("slugify")
const slugify = require("slugify");
const {errorHandler} = require("../helpers/databaseErrorHandler")

exports.create = (req,res)=>{
const {name} = req.body
Expand All @@ -10,7 +11,7 @@ exports.create = (req,res)=>{
category.save((err,data)=>{
if (err){
return res.status(400).json({
error:err
error:errorHandler(err)
})
}
res.json(data)
Expand Down
2 changes: 1 addition & 1 deletion server/controllers/userAuthentication.js
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ exports.logout = (req,res)=>{

exports.requireLogin = expressJwt({
secret: process.env.JWT_TOKEN_SECRET,
algorithms: ['RS256']
algorithms: ['HS256']
});


Expand Down
39 changes: 39 additions & 0 deletions server/helpers/databaseErrorHandler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
'use strict';

// Get unique error field name

const uniqueMessage = error => {
let output;
try {
let fieldName = error.message.substring(error.message.lastIndexOf('.$') + 2, error.message.lastIndexOf('_1'));
output = fieldName.charAt(0).toUpperCase() + fieldName.slice(1) + ' already exists';
} catch (ex) {
output = 'Unique field already exists';
}

return output;
};


// Get the error message from error object

exports.errorHandler = error => {
let message = '';

if (error.code) {
switch (error.code) {
case 11000:
case 11001:
message = uniqueMessage(error);
break;
default:
message = 'Something went wrong';
}
} else {
for (let errorName in error.errorors) {
if (error.errorors[errorName].message) message = error.errorors[errorName].message;
}
}

return message;
};

0 comments on commit ea20109

Please sign in to comment.