I have created a registration form. So when user filled that data, expected behaviour is, at server business logic should be applied on that data.
Through req
field data should come at server. But it is not coming. req.body
is empty
Here is my code
Register.jsx
function Register() {
const [registerUser, setRegisterUser] = useState({
username: "",
email: "",
password: "",
});
const handleClick = async (e) => {
try {
e.preventDefault();
const response = await RegisterUser(registerUser);
// some code
};
}
users.js
import axios from "axios";
axios.defaults.baseURL = "http://localhost:5000";
export const RegisterUser = async (registerUser) => {
console.log("In RegisterUser =====> ", registerUser); // getting data properly
try {
const response = await axios.post("/api/users/register", registerUser);
return response.data;
} catch (error) {
return error.response.data;
}
};
server.js
const express = require("express");
const cors = require("cors");
require("dotenv").config();
const app = express();
const dbConfig = require("./Config/dbConfig");
const port = process.env.PORT || 5000;
const server = require("http").createServer(app);
const usersRoute = require("./routes/usersRoutes");
app.use(cors({ origin: "http://localhost:3000" }));
app.use("/api/users", usersRoute);
server.listen(port, () => console.log(`Server running on port ${port}`));
usersRoutes.js
const router = require("express").Router();
const User = require("../models/userModel");
// User Registration
router.post("/register", async (req, res) => {
if (!req.body)
console.log("EMPTY"); // EMPTY is getting printed
try {
const user = await User.findOne({ email: req.body.email });
if (user) {
return res.send({
success: false,
message: "User already exists",
});
}
const newUser = new User(req.body);
await newUser.save();
res.send({
success: true,
message: "User created successfully",
});
} catch (error) {
res.send({
message: error.message,
success: false,
});
}
});
module.exports = router;
In above code, I am getting error as :
Cannot read properties of undefined (reading ’email’)
In RegisterUser(), I tried to printed data through
console.log(“In RegisterUser =====> “, registerUser);
and it is coming properly.
But when I try to print data at server side using
if (!req.body)
console.log(“EMPTY”);
it is coming EMPTY
.
Why data is not coming at server side ?