{“error”:“无法解构“req.body”的属性“title”,因为它未定义。” }

问题描述 投票:0回答:1

以下是 Node.js 应用程序的代码片段:

// src/models/workoutsModel.js
const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const workoutSchema = new Schema({
  title: {
    type: String, // Corrected to String
    required: true,
  },
  reps: {
    type: Number,
    required: true,
  },
  load: {
    type: Number,
    required: true,
  },
}, { timestamps: true });

module.exports = mongoose.model("workout", workoutSchema);

// src/Routes/workout.js
const express = require("express");
const Workout = require("../Model/workoutsModel");

const router = express.Router();

router.get("/", (req, res) => {
  res.json({ message: "route for all workouts" });
});

router.get("/:id", (req, res) => {
  res.json({
    message: "getting single routes",
  });
});

router.post("/", async (req, res) => {
  try {
    const { title, reps, load } = req.body;
    const workout = await Workout.create({ title, reps, load });
    res.status(200).json(workout);
  } catch (error) {
    res.status(400).json({ error: error.message });
  }
});

router.delete("/:id", (req, res) => {
  res.json({
    message: "deleting workouts",
  });
});

router.patch("/:id", (req, res) => {
  res.json({
    message: "updating workouts",
  });
});

module.exports = router;

// sr/server.js
require("dotenv").config();
const express = require("express");
const mongoose = require("mongoose");
const workoutRoutes = require("./Routes/workouts");
const app = express();

app.get("/", (req, res) => {
  res.json({ message: "you are on the root page" });
});

app.use((req, res, next) => {
  console.log(req.path, req.method);
  next();
});

app.use("/api/workouts", workoutRoutes);

app.use(express.json());

mongoose
  .connect(process.env.URI)
  .then(() => {
    app.listen(process.env.PORT, () => {
      console.log(
        "connected to the database and listening on port",
        process.env.PORT
      );
    });
  })
  .catch(() => {
    console.log("error connecting to the database");
  }); 

有人可以在这里为我提供帮助吗?目前,我正在尝试使用 express.json(),但当我尝试解构请求正文时,它似乎没有按预期工作。我遇到了问题,并且不确定如何解决。如果有人对使用 express.json() 进行解构有经验或见解,并且可以提供一些指导或建议,我将不胜感激。

node.js express mern destructor
1个回答
0
投票

您的正文解析中间件会插入到某些路由之后,因此那些较早的路由不会看到任何已解析的正文。

确保您的

express.json()
中间件已安装在上方您的
workoutRoutes

© www.soinside.com 2019 - 2024. All rights reserved.