I'm getting empty request body in express.js

Viewed 130

I'm trying to get my data in my database but not getting anything in the body of the request. I have used parse-body and CORS but it still not working. I tried several things but did not work. Backend code:

const bodyParser = require('body-parser');
const cors = require('cors');
const port = 5000;

const app = express();
app.use(cors());
app.use(bodyParser.json());


const MongoClient = require("mongodb").MongoClient;
const uri = "mongodb+srv://ishadDB@cluster0.gi4fd.mongodb.net/?retryWrites=true&w=majority";
const client = new MongoClient(uri, {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});
client.connect((err) => {
  const bookings = client.db("BurjAlArab").collection("bookings");
  console.log("Connected");

  app.post('/addBooking', (req, res) => {
      console.log(req)
    const newBooking = req.body;
    console.log(newBooking);
    bookings.insertOne(newBooking)
      .then(res => {
         res.send(result.insertedCount > 0);
      });
  });
});

app.get("/", (req, res) => {
  res.send("Hello World!");
});

app.listen(port);

front end:

const handleBooking = () => {
    const newBooking = { ...loggedInUser, ...selectedDate };
    fetch('http://localhost:5000/addBooking', {
      method: 'POST',
      header: { 'Content-Type' : 'application/json' },
      body : JSON.stringify({newBooking})
    })
      .then((res) => res.json())
      .then((data) => {
        console.log(data);
      });
  };

Can anyone help me out?

1 Answers

Try to send it in your frontend with the following code

This take use of await

Notice because of the use of await the function have to be async async function bla(){}

async function bla(){
    const data = {newBooking};
        const options = {
            method: 'POST',
            headers: {
                "Content-Type": "application/json",
            },
            body: JSON.stringify(data)
        };
        await fetch('/addBooking', options); 
    }
}
Related