node.js - TypeError:无法读取 node.JS 中未定义的属性“用户名”/快递无法发布到路由
问题描述
发布到我的练习时,我不断收到类型错误。这是我的练习路线:
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,
required: true
},
duration: {
type: Number,
required: true
},
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) => {
推荐阅读
- ruby-on-rails - Rails 记录器有问题。未显示数据库查询参数
- shell - 执行小型 shell 脚本程序时出错
- python - 是否有根据类型提示检查类型的 python linter?
- networking - 为什么不模糊客户端
- css - 如何垂直居中我的网站标题?
- python - seaborn barplot:用x和hue改变颜色
- python - TableView重新实现QAbstractTableModel后表格中没有数据显示
- go - Using go-kit logger api missing methods
- three.js - 在 THREE.js 中设置定向光的目标
- javascript - 如何检查双 v-for 和是否在两者中然后更改样式