点播.主体给出空对象



你好,我正在构建一个REST api,问题是每当我试图从body获取信息时,我得到一个空白对象。我以前这样做过,我知道这是它应该如何工作,所以我的猜测是我在配置服务器时犯了一个愚蠢的错误,但到目前为止我似乎找不到它。所以我请求你的帮助!

这是我的服务器文件:
import dotenv from "dotenv";
dotenv.config();
import express from "express";
import cors from "cors";
import router from "./routes/router.js";
import mongoose from "mongoose"
mongoose.connect(process.env.MONGO_URI);
const db = mongoose.connection;
const app = express();
const PORT = process.env.PORT || 8000;
app.use(express.json());
app.use(express.urlencoded({    extended:true   }));
app.use("/", router);
app.use(cors({
origin: '*',
methods: "GET, POST, PUT, DELETE",
optionsSuccessStatus: 200
}));

app.get("/", (req, res) => {
res.json("Petko");
});
app.listen(PORT, console.log(`server runs at port: ${PORT}`));

这是post请求的路由:

router.post("/articles/new", async(req, res) => {
const body = req.body;
console.log(body);
const newArticle = new Articles({
title: body.title,
description: body.description,
craetedat: body.craetedat,
createdby: body.createdby,
})
try {
const saveArticle = await newArticle.save();
res.json(saveArticle); 
} catch (err) {
console.error(err.message);
}
});

最后是模型模式:

import mongoose from "mongoose"
const Schema = mongoose.Schema;
const article = new Schema({
title: {
type: String,
required:true
},
description: {
type: String,
required: true
},
createdat: {
type: Date,
required: true,
default: Date.now
},
craetedby: {
type: String,
required: true
}
})

const Article = mongoose.model("Articles", article);
export default Article;

提前感谢您的帮助!

如果你在邮差体上选择JSON而不是文本,可能你在使用邮差检查时遇到问题。

我在设置express中间件express的行中发现了我的错误。我给了错误的布尔值,它应该是这样的:

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