Search code examples
node.jsreactjsexpressmern

Express - `req.body` is always empty


I am trying to build a full stack(MERN) application. When I'm sending a request to my Express server with a JSON, I always see my req.body is empty. I can nowhere see my JSON inside my request.

I have tried using only app.use(bodyParser.json()) and app.use(bodyParser.urlencoded({ extended: true }));,but no change.

index.js

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true })); // for encoded bodies
console.log("App");
require("./schema/data");
require("./routes/home_routes")(app);
require("./routes/table_routes")(app);
require("./routes/utility_routes")(app);

utility_routes.js

const mongoose = require("mongoose");
const Data = mongoose.model("data");
module.exports = app => {
  app.get("/api/search_member", (req, res) => {
    console.log("Utility", req);
    console.log("Req Done");
    // const search = await Data.findById({ member_id: req.body.member_id });
    // console.log(search);
  });
};

request.body

[0]   body: {},
[0]   route:
[0]    Route {
[0]      path: '/api/search_member',
[0]      stack: [ [Layer] ],
[0]      methods: { get: true } } }

request from client

 onSearch = async value => {
      console.log(value);
      if (value) {
        const searchData = await axios.get("/api/search_member", { value });
        console.log(searchData);
      }
    };

Solution

  • You are making a GET request. GET request do not send body. To get req.body, make POST request to server.
    
    Firstly:-
    
        const searchData = await axios.post("/api/search_member", { value });
    
    And Secondly,
    
         app.POST("/api/search_member", async (req, res) => {
            console.log("Utility", req);
            console.log("Req Done");            
          });