I want to make a blood management app and I am having issue for user registration if i want to send data everything is working but I am not able to post data through the post request through rest client.
Each parameter is undefined.
index.js
const express=require('express');
const mongoose=require('mongoose');
const cors=require('cors');
const bodyParser=require('body-parser');
const app=express();
const userRoutes=require('./route/userRoutes')
mongoose.connect('mongodb://127.0.0.1:27017/blood').then(()=>{
console.log('connected to database')
}).catch((err)=>{
console.log(err);
})
app.use(bodyParser.json());
// app.use(express.json());
app.use(cors());
app.use('/users',userRoutes);
app.listen(3001,()=>{
console.log('server working on 3001');
})
userRoutes.js
const express=require('express');
const router=express.Router();
const userController=require('../controller/userController')
router.post('/register',userController.registerUser);
module.exports=router;
userController.js
const bcrypt = require('bcrypt');
const User = require('../model/user');
exports.registerUser = async (req, res) => {
const { name, email, password, role, gender, bloodtype, age, disease } = req.body;
console.log(req.body);
try {
const existingUser = await User.findOne({ email });
if (existingUser) {
return res.status(400).json({ error: 'Email already exists' });
}
const hashedPassword = await bcrypt.hash(password, 10);
const newUser = new User({
name,
email,
password: password,
role: role || 'user',
gender,
bloodtype,
age,
disease: disease || 'N/A',
});
await newUser.save();
res.status(201).json({ message: 'New User created' });
} catch (error) {
// console.error(error);
res.status(500).json({ error: 'Server error' });
}
};
user.js
const mongoose=require('mongoose');
const userSchema=new mongoose.Schema({
name:{
type:String,
required:true,
},
password:{
type:String,
required:true,
},
email:{
type:String,
required:true,
},
role:{
type:String,
enum:['user','admin'],
default:'user'
},
gender:{
type:String,
enum:['Male','Female'],
required:true,
},
age:{
type:Number,
required:true,
},
disease:{
type:String,
default:'N/A',
},
bloodtype:{
type:String,
enum:['A+','A-','B+','B-','AB+','AB-','O+','O-'],
required:true,
},
});
const User=mongoose.model('User',userSchema);
module.exports=User
request.rest
using rest client
POST http://localhost:3001/users/register
Content-Type: application/json
{
"name": "John Doe",
"email": "[email protected]",
"password": "securepassword",
"gender": "Male",
"age": 30,
"bloodtype": "A+"
}
I am not able to send the post request send data through post request through the rest client the req.body is empty i.e. each parameter is undefined.
I want to send post data but not able to do that.