Javascript express mongodb服务器未从post请求获取数据

Javascript express mongodb服务器未从post请求获取数据,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试设置一个非常简单的javascript服务器,但是我甚至无法从post请求中正确获取数据 这就是我正在做的。我已经注释了哪些有效,哪些无效。基本上,除了post请求之外,其他一切都可以完美地工作。不幸的是,请求的主体总是空的,导致垃圾信息 const MongoClient = require('mongodb').MongoClient; const express = require('express'); const bodyParser = require('body-pars

我正在尝试设置一个非常简单的javascript服务器,但是我甚至无法从post请求中正确获取数据

这就是我正在做的。我已经注释了哪些有效,哪些无效。基本上,除了post请求之外,其他一切都可以完美地工作。不幸的是,请求的主体总是空的,导致垃圾信息

const MongoClient = require('mongodb').MongoClient;
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use(bodyParser.urlencoded({ extended: false }))


const mongoUrl = '<DBAddress Goes Here>';
MongoClient.connect(mongoUrl, (err, mongoDb) => {
  if(!err) {
    db = mongoDb;
    console.log("Connected correctly to server");//This always happen successfully
  }
});

app.listen(80);


app.get('/test', function(req, res) {
  res.json({ data1: 11, data2: 4, data3: 9 }); //This always works!
});


app.post('/update', function(req, res) {
  const params = req.body;
  console.log(req.body);//Empty
  console.log("Parameters");
  const newReport = {
    id: params.id,
    data: params.data
  };
  console.log(newReport);//Nothing is put in here
});
const MongoClient=require('mongodb')。MongoClient;
const express=require('express');
const bodyParser=require('body-parser');
常量app=express();
use(bodyParser.urlencoded({extended:false}))
const mongoUrl='';
MongoClient.connect(mongoUrl,(err,mongoDb)=>{
如果(!err){
db=mongoDb;
console.log(“正确连接到服务器”);//这种情况总是成功发生
}
});
app.listen(80);
app.get('/test',函数(req,res){
res.json({data1:11,data2:4,data3:9});//这总是有效的!
});
app.post('/update',函数(req,res){
常量参数=请求主体;
console.log(req.body);//为空
控制台日志(“参数”);
const newReport={
id:params.id,
数据:params.data
};
console.log(newReport);//这里没有任何内容
});

我正在Postman中测试此帖子请求,地址和帖子正文部分的适当字段为
website.com/update

您需要解析请求正文,以便在
req.body
中获取正文

由于您已经在使用
body parser
package,只需在urlEncoded中间件之后添加以下行即可。记住快递中中间件的顺序

app.use(bodyParser.json());
将上面的行添加到该行之后

app.use(bodyParser.urlencoded({ extended: false }))
并确保您以JSON格式发送数据,默认情况下邮递员以普通格式发送数据


人们会期望它能起作用,但事实并非如此。我把它放在listen行之后,它不做任何更改(在第一行后面有或没有分号),您只需添加
app.use(bodyParser.json())在URL编码的中间件行之后。为了更清晰,我更新了答案。我的代码顶部现在看起来如下:
const MongoClient=require('mongodb')。MongoClient;const express=require('express');const bodyParser=require('body-parser');常量app=express();app.use(bodyParser.urlencoded({extended:false}))app.use(bodyParser.json()),但它仍然不起作用。您确定要以json格式从邮递员发送请求正文数据吗?你能告诉我你是如何从邮递员那里寄邮件的吗?啊!就这样!我认为邮递员在默认情况下会以JSON格式发送数据,因为它的接口被设置为与之相似,但事实并非如此。当我转到raw并选择JSON作为格式时,一切都开始工作了。谢谢你。请您更新您的答案,以反映关于代码行的注释和关于正确设置邮递员的注释,以便我可以接受它?谢谢