I was trying to create a full stack mern application..I am a bit new to it.While running(post) in postman I am getting an empty object {}

Viewed 23

1.These are my classes. I am getting an empty object while running in postman. ``` const express=require('express') const router =express.Router(); const Hotel=require('../models/Hotel.js') //CREATE router.post("/",async (req,res)=>{ const newHotel=new Hotel({name:req.body.name,type:req.body.type}) try{ const savedHotel=await newHotel.save(); console.log("saved hotel is",savedHotel); res.status(200).json(savedHotel) }catch(error){ res.status(500).json(error) } })

     module.exports=router;
     //model class
     const mongoose=require('mongoose')
     const {Schema}=mongoose;
     const HotelSchema=new Schema({
     name:{
     type:String,
     required:true
     },
     type:{
     type:String,
     required:true
    
     },
     city:{
     type:String,
     required:true
     },
     address:{
     type:String,
     required:true
     },
     photos:{
     type:[String]
        
     },
     description:{
     type:String,
     required:true
     },
     rating:{
     type: Number,
     min: 0,
     max:5
     },
     rooms:{
     type:[String]
     },
    cheapestPrice:{
    type:Number,
    required:true
    },
    featured:{
    type:Boolean,
    default:false
    }

    })
    var exportVar=mongoose.model("Hotel",HotelSchema)
    module.exports=exportVar
   //index.js
   const express=require('express')
   const dotenv=require('dotenv');
   const mongoose=require('mongoose')
   const authRoutes=require('./routes/auth')
   const usersRoutes=require('./routes/users')
   const roomsRoutes=require('./routes/rooms')
   const hotelsRoutes=require('./routes/hotels')

   const app=express();
   dotenv.config()
   const connect=async()=>{
   try{
   await mongoose.connect(process.env.MONGO)
   console.log("connected to mongodb")
   }catch(error){
   throw error
   }
   }
   app.use(
   express.urlencoded({ extended: true })
   );
    
   app.use(express.json());
   app.use("/api/auth",authRoutes)
   app.use("/api/users",usersRoutes)
   app.use("/api/hotels",hotelsRoutes)
   app.use("/api/rooms",roomsRoutes)

   app.listen(4000,()=>{
   console.log("Application is running at port 4000")
   });
  ```
1 Answers

while using async await you have to be bit careful as it is asynchronous call, we cannot certain about execution of the program Because javascript interpreter has concept of queues of execution, which will give priorities to Promises >> Synchronous Call >> Async Calls

try running your code with promises

try
{
  const h = newhotel.save()
  .then(hotel=>{
      console.log(hotel);
       res.status(200).json(hotel)
  })
  .catch(err=>{
      console.log(err)
      res.status(500).json(err)
  })
}
catch(err=>{
  res.status(500).json(err)   
})
Related