简体   繁体   English

Express 向 Postman 请求返回一个空的 req.body

[英]Express returns an empty req.body to a Postman request

I'm trying to set up a simple CRUD app.我正在尝试设置一个简单的 CRUD 应用程序。 I've set up the DELETE route in express, and I'm trying to hit it using Postman.我已经在 express 中设置了 DELETE 路线,我正在尝试使用 Postman 来击中它。

When I log req.body on the request, I get an empty object.当我在请求中记录 req.body 时,我得到一个空的 object。

The route:路线:

var router = express.Router();

if (process.env.NODE_ENV !== 'production') {
    require('dotenv').config();
};

username = process.env.MONGODB_USERNAME;
password = process.env.MONGODB_PASSWORD;

const MongoClient = require('mongodb').MongoClient;
const connectionString = `mongodb://${username}:${password}@localhost:27017`

/* DELETE post delete. */
router.delete('/', (req, res) => {
    const postId = req.body.postId;
    console.log(req.body);
    console.log(postId);
    MongoClient.connect(connectionString, {useUnifiedTopology: true})
    .then(client => {
        console.log("Delete request to database!");
        const db = client.db("blog");
        const postsCollection = db.collection('blogPosts');
        postsCollection.findOneAndDelete({"_id": postId})
        .then(deletedDocument => {
            if(deletedDocument) {
              console.log(`Successfully deleted document that had the form: ${deletedDocument}.`)
              res.send(`Successfully deleted document that had the form: ${deletedDocument}.`);
            } else {
              console.log("No document matches the provided query.")
              res.send("No document matches the provided query.");
            }
            return deletedDocument
          })
          .catch(err => console.error(`Failed to find and delete document: ${err}`));
    })
    .catch(error => console.error(error));
});

module.exports = router;

The Postman request: Postman 请求: 邮递员请求

The Express app.js: Express app.js:

var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var postRequestRouter = require('./routes/postrequest');
// var adminRouter = require('./routes/admin');
var postDeleteRouter = require('./routes/postdelete');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/postrequest', postRequestRouter);
// app.use('/admin', adminRouter);
app.use('/postdelete', postDeleteRouter);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

The resulting console logs:生成的控制台日志:

{}
undefined
Delete request to database!
Successfully deleted document that had the form: [object Object].
DELETE /postdelete 200 43.848 ms - 7

I understand that the request to MongoDB itself is likely to fail because it isn't formatted correctly, but for now I'm just trying to understand why req.body is empty.我知道对 MongoDB 的请求本身可能会失败,因为它的格式不正确,但现在我只是想了解为什么 req.body 为空。

Any help would be appreciated!任何帮助,将不胜感激!

Shortly after posting this question, I linked it to a programming Discord.发布此问题后不久,我将其链接到编程 Discord。 A user going by "nnari" quickly figured out what was wrong.一位名为“nnari”的用户很快就发现了问题所在。

Turns out I simply needed to change the dropdown in Postman from "Text" to "Json".原来我只需要将 Postman 中的下拉菜单从“Text”更改为“Json”。

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM