I am trying to send data into mongodb database using postman. Everything seems fine but i am getting error.
My code looks like this. i have tried to follow MVC pattern. It is bit messy. Hope i can get solution. I have used express generator
This is app.js file
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
// var indexRouter = require('./routes/index');
// var usersRouter = require('./routes/users');
const {
createUserRoute,
usersRouter,
indexRouter
} = require('./routes');
// const createUserRoute = require('./routes/createuser-route');
require('./db_init');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// app.use('/', indexRouter);
// app.use('/users', usersRouter);
app.use('/adduser', createUserRoute);
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
This is database initializer
const mongoose = require('mongoose');
const dbUrl = "mongodb://localhost:27017/payroll-system";
mongoose.connect(dbUrl, (err,success) => {
if(err){
console.log('Error connecting to database');
}
else{
console.log('Connected to database');
}
})
This is create user router
var express = require('express');
var router = express.Router();
// var UserModel = require('../models/user-model');
const {createUser} = require('../controller/createUser');
router.post('/', createUser);
// router.post('/', function (req, res, next) {
// const user = new UserModel(req.body);
// user.save((err, result) => {
// if (err) {
// res.json(err);
// }
// else {
// res.json(result);
// }
// })
// });
module.exports= router;
It handles every routes and exports them to app.js
module.exports.createUserRoute = require('./createuser-route');
module.exports.indexRoute = require('./index');
module.exports.usersRoute = require('./users');
This is usercreate controller
var express = require('express');
var router = express.Router();
var UserModel = require('../models/user-model');
function createUser(req,res,next){
const user = new UserModel(req.body);
user.save((err,result) => {
if(err){
res.json(err);
}
else{
res.json(result);
}
})
}
module.exports = {createUser};
Database Model looks like this
const mongoose = require('mongoose');
const employeeSchema = new mongoose.Schema({
name:{
type:String,
required:true
},
email:{
type:String,
required:true,
unique:true
},
// password:{
// type:String,
// required:true
// },
phone:{
type:Number,
required:true
},
address:{
type: String,
required: true
},
date_of_birth:{
type:Date,
// required:true
},
gross_salary:{
type:Number,
required:true
},
gender:{
type:String,
enum:['male','female','other']
},
position:{
type: String,
enum:['Board Member','Senior Developer', 'Junior Developer','Admin Officer','Project Manager','Intern','Staff']
},
bank:{
type: String,
required: true,
enum:['Agriculture Bank','Bank of Kathmandu','Citizens Bank','Everest Bank','Nepal Investment Bank','Nepal SBI Bank','Nepal Union Bank','Standard Chartered Bank']
},
account_number:{
type:Number,
required:true
},
account_holder_name:{
type:String,
required:true
},
status:{
type:String,
enum:['active','inactive']
},
shift:{
type:String,
enum:['Full Time','Part Time', 'Hour Basis']
},
marital_status:{
type:String,
enum:['Married','Unmarried']
}
});
const Employee = mongoose.model('Employee', employeeSchema);
module.exports = Employee;