【发布时间】: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