TypeError:无法读取node.JS中的undefined属性'username'/ express无法发布到路由

问题描述

发布到练习中时,我总是收到错误消息。这是我的锻炼路线:

 const router = require("express").Router();
let Exercise = require("../models/exercise.model.js");
//get all exercises
router.get("/",(req,res) => {
  Exercise.find()
    .then(exercises => res.json(exercises))
    .catch(err => res.status(400).json("error: " + err));
});
//add an exercise

router.route("/add").post((res,req) => {
  //parse req.body
  const username = req.body.username;
  const description = req.body.description;
  const duration = Number(req.body.duration);
  const date = Date.parse(req.body.date);
  //create new exercise object
  const newExercise = new Exercise({
    username,description,duration,date
  });
  //save newExercise object
  newExercise
    .save()
    .then(() => res.json("Exercise Added!"))
    .catch(err => res.status(400).json("error: " + err));
});

module.exports = router;

这是我的模特:

const mongoose = require("mongoose");

const Schema = mongoose.Schema;
// create exercise data model
const exerciseSchema = new Schema(
  {
    username: {
      type: String,required: true
    },description: {
      type: String,duration: {
      type: Number,date: {
      type: Date,required: true
    }
  },{
    timestamps: true
  }
);

const Exercise = mongoose.model("Exercise",exerciseSchema);

module.exports = Exercise;

我尝试将路由更改为router.post而不是router.route,我尝试更改数据模型。

以及我的server.js:

const express = require("express");
const mongoose = require("mongoose");
const app = express();
const cors = require("cors");

//middleware

app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
require("dotenv").config();

//environment

const port = process.env.PORT || 5000;

//mongoose establish connection

const uri = process.env.ATLAS_URI;
mongoose.connect(uri,{
  useNewUrlParser: true,useCreateIndex: true,useUnifiedTopology: true
});

const connection = mongoose.connection;

connection.once("open",() => {
  console.log("MongoDB connection established successfully");
});

//routers for users and exercises

const exercisesRouter = require("./routes/exercises");
const usersRouter = require("./routes/users");

app.use("/exercises",exercisesRouter);
app.use("/users",usersRouter);

//error log

app.use(function (err,req,res,next) {
  console.error(err.stack);
  res.status(500).send(`error: ${err}`).next();
});

app.listen(port,() => {
  console.log(`server is up and running on port: ${port}`);
});

以下是失眠中记录的错误:

enter image description here

非常感谢您的帮助!

解决方法

您将reqres放到了router.route("/add").post((res,req) => {中。

解决此问题:router.route("/add").post((req,res) => {

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...