skip to Main Content

i have a problem when POST some data in POSTMAN my problem is during "post" method /auth/login req.body return empty array.
Postman return empty object only if i use POST method with use form-data, if i change to xxx-www-form-urlencoded whatever works fine. I wanna know why it works so

const express = require('express');
const mongoose = require('mongoose');
const app = express();
require('dotenv').config();
const port = process.env.PORT || 5000;



app.use(express.json());

app.use(express.urlencoded({ extended: true }));

app.use("/static", express.static(__dirname + "/assets"))


app.post('/auth/login', (req, res) => {
    res.status(200).json(req.body)
})



mongoose.connect("mongodb://localhost:27017")
    .then(() => {
        app.listen(port, () => {
            console.log('port' + port)
        })
    })

2

Answers


  1. Chosen as BEST ANSWER

    I solved this, i just created multer in my controller and it work how i wanted

    const express = require('express');
    const router = express.Router();
    const { getUsers, createNewUser } = require('../controllers/newUser')
    const path = require('path');
    const multer = require('multer');
    
    
    const upload = multer();
    
    
    router.get('/', getUsers)
    
    router.get('/:id', (req, res) => res.send('get single user'))
    router.post('/', upload.none(), createNewUser)
    
    
    
    module.exports = router;
    

  2. I’m assuming you mean application/x-www-form-urlencoded instead of xxx-www-form-urlencoded and you mean multipart/form-data instead of form-data.

    These 2 content-types are completely different encodings. When you called:

    app.use(express.urlencoded({ extended: true }));
    

    You added a middleware that can parse application/x-www-form-urlencoded, but that does not mean it automatically parses other formats too. It’s only for that format, just like express.json() is only for the application/json format.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search