微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

req.body 在 post 请求中未定义

如何解决req.body 在 post 请求中未定义

我正在尝试将 post 函数中请求正文的内容打印到控制台,如下所示:

export const createOffering = async (req,res) => {
const offering = req.body;
const newOffering = new Offering(offering);
console.log(req.body);
try{
    //await offering.save();
    res.status(201).json(newOffering);
    
}
catch(error){
    res.status(409).json({message: error.message})
}

}

然而,控制台打印“未定义”

这是我的 index.js 的代码

import express from "express";
import mongoose from "mongoose";
import cors from "cors";
import bodyParser from "body-parser";
import offeringsRoutes from './routes/offerings.js'

const app = express();

app.use('/offerings',offeringsRoutes);

app.use(cors());
app.use(express.urlencoded({ limit: '25mb',extended: true }));
app.use(express.json({ limit: '25mb' }));

解决方法

app.use 通常用于要在路由之前运行的中间件。我还看到您导入了 bodyParser 但不使用它,虽然这不是必需的,但您可能希望重构的方式如下:

import express from "express";
import mongoose from "mongoose";
import cors from "cors";
import bodyParser from "body-parser";
import offeringsRoutes from './routes/offerings.js'

const app = express();

// You generally want this middleware above your routes if you want
// them to apply to all routes that come after these.
app.use(cors());
app.use(express.urlencoded({ limit: '25mb',extended: true }));
app.use(express.json({ limit: '25mb' }));
app.use(bodyParser.json());

// If you only want to accept `POST` requests
app.post('/offerings',offeringsRoutes);
// or you can use this if you want this function to handle all requests to this route
// app.all('/offerings',offeringsRoutes);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。