【问题标题】:request.body is not defined while sending json data from postman从邮递员发送 json 数据时未定义 request.body
【发布时间】:2019-12-19 15:06:33
【问题描述】:

基本上我想做的是使用 expressjs 在 mongodb 中创建一个客户集合。当我从邮递员发送数据时,它显示 req.body 未定义。

我的 customer.js 看起来像这样

const express = require('express');
const router = express.Router();
const fs = require('fs');

const Customers = require('../models/customer');


router.post('/addcustomer',(res,req,next)=>{
    const customer = new Customers({
        name:req.body.name,
        address:req.body.address,
        products:req.body.products,
    });

    customer.save()
    .then(result=>{
        console.log(result);
        res.json({message:"killer"});
    }).catch(error=>{
        console.log(error);
        res.json({error:error})
    });

我的 app.js 看起来像这样

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const morgan = require('morgan');


// route files include here
const UserRoutes = require('./api/routes/users');
const CustomerRoutes = require('./api/routes/customer');

// mongoose connection string
mongoose.connect('mongodb://127.0.0.1:27017/bdrs',{useNewUrlParser:true,useUnifiedTopology: true});

app.use(morgan('dev'));
app.use(express.json());
//Cors policies 
app.use((req,res,next)=>{
    res.header('Access-Control-Allow-Origin','*');
    res.header(
        'Access-Control-Allow-Header',
        'Origin,X-Requested-With,Content-Type,Accept,Authorization'
    );
    if(req.method == 'OPTIONS'){
        res.header(
            'Access-Control-Allow-Methods',
            'GET,POST,PATCH,DELETE,PUT'
        );
        return res.status(200).json({})
    }
    next();
});

//Routes for operations
app.use('/user',UserRoutes);
app.use('/customer',CustomerRoutes);



// error handling
app.use((res,req,next)=>{
    const error = new Error('Not Found');
    error.status = 404;
    next(error);
});

app.use((error,req,res,next)=>{
    res.status(error.status||500);
    res.json({
        error:{
            message:error.message
        }
    });
});

module.exports = app;

之后我的邮递员请求看起来像这样

我在其他地方做了类似的代码,它工作正常。不知道这里有什么问题。提前致谢。

【问题讨论】:

  • 从邮递员发送标题Content-Type = application/json
  • 它已经默认运行了
  • @Biswas Sampad Express 版本??
  • 您需要bodyParser,但尚未使用。添加此行app.use(bodyParser.json());。您已经添加了express.json(),它应该适合您。
  • 在您的控制器中,输入参数的顺序必须是req, res, next。但是你这样说res, req, next

标签: node.js express postman


【解决方案1】:

你的问题在这里

改变

router.post('/addcustomer',(res,req,next)=>{ 

router.post('/addcustomer',(req,res,next)=>{

【讨论】:

  • @Biswas Sampad 如果确实解决了您的问题,请接受答案。
猜你喜欢
  • 1970-01-01
  • 2023-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多