使用邮递员中的表格数据将需求主体清空为空

问题描述 投票:0回答:1

当我通过这样的表单数据使用postman发布请求时,在我的快速js中出现了空对象:

enter image description here

router.post('/course',  async(req, res) => {
    console.log(req.body) // console logs empty object {}
    try{
    const course = new Course({
                name : req.body.name,
                thumbnail : 'placeholder'
            })  
            uploadImg(req, res, function (err) {
                if (err) {
                  console.log(err.message);
                  // An error occurred when uploading
                  return
                }
                console.log('Everything went fine');
                // Everything went fine
              })
    }catch(e){
        res.status().send()
    }  
})

并且我不能使用multer来解析数据,因为首先我想通过猫鼬生成一个id,然后我像上面那样使用multer例如,我不能像:

router.post('/course', upload.single(), async(req, res) => {
    console.log(req.body) // console logs empty object {}
    try{
    const course = new Course({
                name : req.body.name,
                thumbnail : 'placeholder'
            })  
            uploadImg(req, res, function (err) {
                if (err) {
                  console.log(err.message);
                  // An error occurred when uploading
                  return
                }
                console.log('Everything went fine');
                // Everything went fine
              })
    }catch(e){
        res.status().send()
    }  
})

它给出错误:意外字段。

所以有什么方法可以先获取我的req.body数据,这样我就可以生成我的猫鼬ID,然后上传图像

//index.js

const express = require('express')
var multer = require('multer');
require('./db/mongoose')
const userRouter = require('./routers/user')
const taskRouter = require('./routers/task')
const courseRouter = require('./routers/course')

var bodyParser = require('body-parser');

const app = express()
const port = process.env.PORT || 3000



// // for parsing application/json
 app.use(bodyParser.json()) 

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

app.use(express.json())
 app.use(express.static('public'))

app.use(userRouter)
app.use(taskRouter)
app.use(courseRouter)


app.listen(port, () => {
    console.log('connected succefully')
})
node.js mongodb express postman form-data
1个回答
0
投票
如果使用的是express

版本> = 4.16您可以确定删除body-parser库。您也可以从package.json中删除express`4.16的新功能之一是将bundle express与body-parser捆绑在一起。如果是这种情况,请删除带有body-parser lib的行,并仅使用express附带的body解析器:

app.use(express.json()); app.use(express.urlencoded({ extended: true }));
如果是

版本<= 4.16

还可以在您的package.json中安装body-parser。const bodyparser = require('body-parser') ... app.use(bodyparser.json()) app.use(bodyparser.urlencoded({extended: true}))
您应该坚持使用,但不能混用。
© www.soinside.com 2019 - 2024. All rights reserved.