Получение "Cannot PUT" с сервера - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь создать маршрут PUT на основе учебника, которому я следовал для стека MERN.

Модель:

const mongoose = require('mongoose');

const Schema = mongoose.Schema;

const toDoSchema = new Schema({
    //taskNum: {type: Number, required: true},
    task: {type: String, required: true},
    //progress: {type: String, required: true},
    //difficulty: {type: Number, required: true}
});

const toDo = mongoose.model("toDo", toDoSchema);

module.exports = toDo

API:

const express = require('express');
const router = express.Router();

//ToDo Model
const ToDo= require('../../models/toDo');

// @route   GET api/toDo
// @desc    GET all to dos
// @access  Public 
router.get('/', (req, res) => {
    ToDo.find()
    .sort({ taskNum: -1 })
    .then(toDo => res.json(toDo))
});

// @route   POST api/toDo
// @desc    create a new to dos
// @access  Public 
router.post('/', (req, res) => {
    const newToDo = new ToDo({
        //taskNum: req.body.taskNum,
        task: req.body.task,
        //progress: req.body.progress,
        //difficulty: req.body.difficulty
    })

    newToDo.save().then(toDo => res.json(toDo));
});

// @route   DELETE api/toDo/:id
// @desc    Delete a to do
// @access  Public 
router.delete('/:id', (req, res) => {
        ToDo.findById(req.params.id)
        .then(toDo => toDo.remove().then(() => res.json( {success: true } )))
        .catch(err => res.status(404).json( {success: false } ));
});

// @route   UPDATE api/toDo/:id
// @desc    Update a to do
// @access  Public 
router.put('/:id', (req, res) => {
        ToDo.findById(req.params.id)
        .then(toDo => toDo.set({ task: req.body.task }).then(() => res.json( {success: true } )))
        .catch(err => res.status(404).json( {success: false} ));
});


module.exports = router;

Я тестирую код в Postman и продолжаю получать сообщение об ошибке Cannot PUT.

Ошибка почтальона

Все остальные маршруты работают отлично, и я просто застрял в этой конечной точке.Любые идеи о том, что я должен изменить?

1 Ответ

0 голосов
/ 20 февраля 2019

Убедитесь, что вы отправляете данные через body . Попробуйте записать значения req.params.id и req.body.task и попробуйтечто-то вроде этого.используйте findOneAndUpdate

// @route   UPDATE api/toDo/:id
// @desc    Update a to do
// @access  Public 
router.put('/:id', (req, res) => {
    ToDo.findOneAndUpdate({ id: req.params.id }, { $set: { task: req.body.task } }, { new: true }, 
        function(err, doc) {
              if(!err){
                  res.json( {success: true } )
               }
         });
}).catch(err => res.status(404).json( {success: false} ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...