Разрешение UnhandledPromiseRejectionWarning в запросе экспресс-публикации - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь отправить запрос на сервер (mongodb), но получаю эту ошибку:

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;

моя модель todo

// 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 \ гора прототипа \ mern \ backend \ rout \ todo.js: 33: 32) в Layer.handle [as handle_request] (C: \ Users \ kinG \ Desktop \ projects \ гора прототипов \ mern \ backend \ node_modules \ express \ lib \ router \ layer.js: 95: 5)

спасибо

1 Ответ

1 голос
/ 11 июня 2019

Вы получаете доступ к todo_description из req.body.req.body будет доступно, только если вы добавите промежуточное программное обеспечение body-parser или добавите подобное самостоятельно.

Добавьте это прямо перед загрузкой ваших маршрутов:

const bodyParser = require('body-parser');
const express = require('express');

const app = express();

app.use(bodyParser.json());

Вы также можете добавитьэто на конкретный маршрут.Подробнее об этом здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...