【发布时间】:2019-10-25 23:50:27
【问题描述】:
我正在尝试向服务器 (mongodb) 发出 post 请求,但出现此错误:
UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“todo_description”
我在本地主机上运行 mongodb
// Require Express
const express = require("express");
// Setting Express Routes
const router = express.Router();
// Set Up Models
const Todo = require("../models/todo");
// Get All Todos
router.get("/", async (req, res) => {
try {
const todo = await Todo.find();
res.json(todo);
} catch (err) {
res.json({ message: err });
}
});
router.get("/:id", async (req, res) => {
try {
const id = req.params.id;
await Todo.findById(id, (err, todo) => {
res.json(todo);
});
} catch (err) {
res.json({ message: err });
}
});
router.post("/add", async (req, res) => {
const todo = new Todo({
todo_description: req.body.todo_description,
todo_responsible: req.body.todo_responsible,
todo_priority: req.body.todo_priority,
todo_completed: req.body.todo_completed,
});
try {
await todo.save();
res.json(todo);
} catch (err) {
res.json({ message: err });
}
});
router.patch("/update/:id", async (req, res) => {
try {
const updateTodo = await Todo.updateOne(
{ _id: req.params.id },
{ $set: { todo_description: req.body.todo_description } }
);
updateTodo.save().then(updateTodo => {
res.json(updateTodo);
});
} catch (err) {
res.json({ message: err });
}
});
router.delete("/delete/:id", async (req, res) => {
try {
const deleteTodo = await Todo.deleteOne({ _id: req.params.id });
res.json(deleteTodo);
} catch (err) {
res.json({ message: err });
}
});
module.exports = router;
我的待办事项模型
// Require Mongoose
const mongoose = require("mongoose");
// Define Schema
// const Schema = new mongoose.Schema;
// Define Todo-Schema
const TodoSchema = new mongoose.Schema({
// Creating Fields
todo_description: {
type: String
},
todo_responsible: {
type: String
},
todo_priority: {
type: String
},
todo_completed: {
type: Boolean
},
todo_date: {
type: Date,
default: Date.now
}
});
// Compile Model From Schema
// const TodoModel = mongoose.model("Todos", TodoSchema);
// Export Model
module.exports = mongoose.model("todos", TodoSchema);
错误信息:
(节点:548)UnhandledPromiseRejectionWarning:TypeError:无法读取未定义的属性“todo_description” 在 router.post (C:\Users\kinG\Desktop\projects\mountain-of-prototype\mern\backend\routes\todo.js:33:32) 在 Layer.handle [as handle_request] (C:\Users\kinG\Desktop\projects\mountain-of-prototype\mern\backend\node_modules\express\lib\router\layer.js:95:5)
谢谢
【问题讨论】:
-
你使用body-parser吗?
-
是的,尝试 get 方法说这在发送给客户端后无法设置标题希望你不介意这些问题是后端的新手
-
对不起,这是我的旧评论,比给出的答案更早,已经解决了您的问题。顺便说一句,您现在是在谈论一个新错误吗?那么是时候开始一个新的问题了。确保在您的新问题中包含所有相关代码(因此,切勿在一个问题中要求两个或更多内容。提出的每个问题只有一个目标 - 只是试图帮助您避免其他人的反对意见)。欢迎来到这里,不要让一些潜在的负面事件让你灰心——尤其是。要非常小心你如何提问和回答(放松,你会掌握它的窍门)。祝你一切顺利,伙计。
标签: node.js mongodb express mean