'how to pass FormData from react to express server to save the data in mongodb?
I am using formdata and axios.post method to send the data to the server, i am also using express.json() and express.urlencoded({extended:false}), but no data passing, although payload is showing the formdata. what to do... ? here is my code react code:
const submit = async(e)=>{
e.preventDefault();
if(validate()){
const url = 'http://localhost:5000/users/adduser'
const formdata = new FormData();
if(input.myimage===""){
formdata.append("image",null)
}
else{
formdata.append("image",input.myimage.name)
}
formdata.append("fname",input.fname)
formdata.append("lname",input.lname)
formdata.append("gender",input.gender)
formdata.append("t_no",input.tnumber)
formdata.append("join_date",input.jdate)
formdata.append("address",input.address)
formdata.append("confirm_date",input.cdate)
formdata.append("birthdate",input.dob)
formdata.append("email",input.email)
formdata.append("passport",input.passport)
formdata.append("phone",input.phone)
try{
console.log("this is try")
const response = await Axios.post(url,formdata)
console.log(response);
}
catch(err)
{
console.log(err)
}
}
}
on Server Side: app.js:
const express = require("express");
const app = express();
const PORT = process.env.port || 5000;
const path = require("path");
const router = require("./router/router");
const cors = require("cors")
require("./connection/database")
app.use('/public',express.static('public'));
app.use(express.json())
app.use(express.urlencoded({ extended : false, }));
app.use(cors());
app.use("/users",router);
app.listen(PORT,()=>{
console.log(`server is running at port - ${PORT}`)
})
router.js:
const bodyParser = require("body-parser")
const express = require("express");
const router = express.Router();
const mycontrol = require("../controller/mycontrolls");
router.use(express.json())
router.use(express.urlencoded({ extended : false, }));
router.get("/", (req,res)=>{
// res.json({message:"This is my Homepage"})
console.log("home");
});
router.post("/adduser", mycontrol.adduser)
module.exports = router;
mycontroll.js:
const express = require("express");
const app = express();
const Data = require("../models/Userschema")
app.use(express.json())
app.use(express.urlencoded({extended : false, }));
const adduser = async(req,res) => {
if(req.body.length === 0){
console.log("no data passed");
}
else{
console.log("I am in adduser else");
console.log(req.body);
const {fname,lname,gender,t_no,join_date,address,confirm_date,birthdate,email,passport,phone,image} = req.body;
const data = new Data({fname,lname,gender,t_no,join_date,address,confirm_date,birthdate,email,passport,phone,image})
const result = await data.save();
console.log(result);
res.status(200).json({message:"passed"})
}
};
module.exports = {adduser}
I am getting ok response i.e my request succesfully processed, but form data is not presend on the server, this is what i get in my node console:
I am in adduser else
{}
{
_id: new ObjectId("62837f38fe3be21335e88b07"),
createdAt: 2022-05-17T10:55:52.762Z,
updatedAt: 2022-05-17T10:55:52.762Z,
__v: 0
}
id created by mongodb, timestamp also created, but the data that is passed from formdata is empty.
Give me the solution please.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
