这是我的控制器文件。我已经使用了主体解析器,但我仍然得到 req.body 未定义。
const express = require("express");
const app = express();
let bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
const Projects = require("../models/Projects");
// Route handlers
const handleCreateProject = async (req, res) =\> {
try {
const body = req.body;
console.log("req.body", req.body);
const result = await project.save();
res.status(201).send(result);
console.log("Project successfully added");
} catch (error) {
console.error("Error saving project:", error);
res.status(500).send({ error: "Failed to save project" });
}
};
const handleGetAllProjects = async (req, res) =\> {
try {
const projects = await Projects.find({});
if (projects.length \> 0) {
res.send(projects);
} else {
res.send({ result: "No projects found" });
}
} catch (error) {
console.error("Error fetching projects:", error);
res.status(500).send({ error: "Failed to fetch projects" });
}
};
module.exports = {
handleCreateProject,
handleGetAllProjects,
};
const mongoose = require("mongoose");
const ProjectSchema = new mongoose.Schema({
name: { type: String },
description: { type: String },
createdAt: { type: Date, default: Date.now },
updatedAt: { type: Date, default: Date.now },
});
const Project = mongoose.model("projects", ProjectSchema);
module.exports = Project;
const express = require("express");
const router = express.Router();
const {handleCreateProject,handleGetAllProjects} = require('../controllers/Projects')
router.post("/createproject",handleCreateProject);
router.get("/getallprojects",handleGetAllProjects);
module.exports = router;
require('dotenv').config()
const express = require('express');
const {MongoConnect} = require("./config")
const app = express();
const port = process.env.MONGO_PORT;
// const router = express.Router();
const cors = require("cors");
// Middleware setup
app.use(cors());
MongoConnect().then(()=\>console.log("MongoDB connected"));
const userRouterProjects = require('./routes/Projects')
app.use("/api",userRouterProjects);
app.listen(port,()=\>console.log(`Server is running on port ${port}`));
当我从前端或 Postman 发送 post 请求时,条目会在数据库中创建,但正文中的数据不会保存在数据库中。尽管正确使用了主体解析器,但我在后端得到了 req.body 未定义。
Only this is saving in database
{
"\_id": "6629137fe1ab2f4bbab92586",
"createdAt": "2024-04-24T14:13:19.579Z",
"updatedAt": "2024-04-24T14:13:19.579Z",
"\__v": 0
}
This is request.body I am sending
{
"name":"Task Manager1",
"description":"This is a task manager"
}
Content-type:application/json 已在邮递员中使用,我正在发送 POST 请求。
此代码应该位于index.js 文件而不是controllers 文件中。从控制器文件中删除它并将其放入index.js
const bodyParser = require("body-parser");
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));