问题描述
发布到练习中时,我总是收到错误消息。这是我的锻炼路线:
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}`);
});
非常感谢您的帮助!
解决方法
您将req
和res
放到了router.route("/add").post((res,req) => {
中。
解决此问题:router.route("/add").post((req,res) => {