API получает статус возврата вызова 400 - PullRequest
0 голосов
/ 10 марта 2020

Я пытаюсь научиться использовать стек MERN. Я следую инструкциям на YouTube (https://www.youtube.com/watch?v=WT67-OETeGU). В настоящее время я определил и создал свой серверный файл. js следующим образом:

const express = require("express");
const app = express();
const bodyParser = require("body-parser");
const cors = require("cors");
const mongoose = require("mongoose");
const todoRoutes = express.Router();
const PORT = 4000;

let Todo = require("./todo.model.js");

app.use(cors());
app.use(bodyParser.json());

mongoose.connect("mongodb://127.0.0.1:27017/todos", {
  useUnifiedTopology: true,
  useNewUrlParser: true
});

const connection = mongoose.connection;

todoRoutes.route("/").get(function(req, res) {
  Todo.find(function(err, todos) {
    if (err) {
      console.log("error getting data");
    } else {
      res.json(todos);
    }
  });
});

todoRoutes.route("/:id").get(function(req, res) {
  let id = req.params.id;
  Todo.findById(id, function(err, todo) {
    if (err) {
      console.log("error finding todo object with id: " + id);
    } else {
      res.json(todo);
    }
  });
});

todoRoutes.route("/add").post(function(req, res) {
  let todo = new Todo(req.body);
  todo
    .save()
    .then(todo => {
      res.status(200).json({ todo: "Todo added successfully" });
    })
    .catch(err => {
      res.status(400).send("failed to save new todo");
    });
});

todoRoutes.route("/update/:id").post(function(req, res) {
  let id = req.params.id;
  Todo.findById(id, function(err, todo) {
    if (!todo) {
      res.status(400).send("cant update id: " + id);
    } else {
      todo.todo_description = req.body.todo_description;
      todo.todo_responsible = req.body.todo_responsible;
      todo.todo_priority = req.body.todo_priority;
      todo.todo_completed = req.body.todo_completed;
      todo
        .save()
        .then(todo => {
          res.json("Todo updated");
        })
        .catch(err => res.status(400).send("update not possible"));
    }
  });
});

app.use("./todos", todoRoutes);

Я пытаюсь протестировать свой API, поэтому я установил Postman и настроил его. Я пытаюсь сделать запрос GET: http://localhost: 4000 / todos . Тем не менее, Почтальон только возвращает 404, говоря: «Не удалось получить ответ».

Я запустил команды mongod и mon go на своем терминале, чтобы запустить Mon go.

Есть предложения, где я ошибся?

1 Ответ

0 голосов
/ 10 марта 2020

Кажется, вы устанавливаете свои конечные точки как относительные пути. Можете ли вы удалить точку, продолжая "/ todos"? в app.use("./todos", todoRoutes); `

...