When sending ReactJS request using post method, the req. body object in NodeJS has no values while I tested the api using postman and it worked as expected. I'm using axios to connect ReactJS to the API and express in nodejs ReactJS code:
function CreatePost(props) {
let [file, setFile] = useState();
let navigate = useNavigate();
const params = useParams();
let groupeId = params.id;
console.log(groupeId)
const validationSchema = yup.object({
content: yup.string().min(10, 'Must be more than 10 characters').required('description is required')
})
const onSubmit = async () => {
let item = new FormData()
item.append('title', formik.values.title)
item.append('content', formik.values.content)
item.append('file', file)
let user = JSON.parse(localStorage.getItem('userInfo'))
let res = await api.post(`/createPoste/${user.id}/${groupeId}/`, item)
if (res.data === false)
console.log('creation de post impossible')
else
navigate(`/groupe/home/${groupeId}`)
}
const formik = useFormik({
initialValues: {
title: '',
content: ''
},
onSubmit,
validationSchema
})
Nodejs code:
const express = require('express')
const bodyParser = require('body-parser')
const router = express.Router()
const db = require('../db')
router.use(bodyParser.urlencoded({extended: true}));
router.post('/createPoste/:userId/:groupeId', async (req, res) => {
console.log(req.body)
let post = {
userId: req.params.userId,
groupeId: req.params.groupeId,
title: req.body.title,
content: req.body.content
}
await db.query("insert into postes set ?", post, function (err, result){
if (err) {
console.log(err.message)
res.send(false)
}
else res.send(true)
})
})
In axios you should send the data in body. Append the userID and groupeId into the item formData().