Невозможно выполнить POST / puffins / 5f298d0ebcbaf254dcf282b3 - PullRequest
0 голосов
/ 04 августа 2020

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

//THE ROUTE
app.delete('/puffins/:id', (req, res) => {
Puffin.findByIdAndRemove(req.params.id, (err, found) => {
  if (err) {
    console.log(err);
  } else {
    console.log('FOUNDIT', found); //DOES NOT PRINT
    res.redirect('/');
  }
});

})

Маршрут вызывается из формы ниже.

  <form action="/puffins/<%- puffin._id %>?_method= DELETE" method="POST">
    <button>Delete</button>
  </form>

Зависимости и их вызов ...

//DEPENDENCIES
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const methodOverride = require('method-override');
const Puffin = require('./models/puffin');

//INVOCATION
app
  .set('view engine', 'ejs')
  .use(express.urlencoded({ extended: true }))
  .use(express.static('public'))
  .use(methodOverride('_method'))

Файлы проекта выглядят так

projectDirectory-->
                   app.js
                   modelsDirectory --> puffin.js
                   viewsDirectory -->
                                       index.ejs
                                       edit.ejs
                                       new.ejs 
                    

Спасибо!

А вот ВСЕ точка входа, приложение. js

const express = require('express');
const app = express();
const mongoose = require('mongoose');
const methodOverride = require('method-override');
const Puffin = require('./models/puffin');

mongoose.connect('mongodb://localhost/deletePuffins', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
  useFindAndModify: false,
});


app
  .set('view engine', 'ejs')
  .use(express.urlencoded({ extended: true }))
  .use(express.static('public'))
  .use(methodOverride('_method'))

  .get('/', (req, res) => {
    res.redirect('/puffins');
  })
  //   index
  .get('/puffins', (req, res) => {
    Puffin.find({}, (err, puffins) => {
      if (err) {
        console.log(err);
      } else {
        res.render('index', { puffins: puffins });
      }
    });
  })
  // new
  .get('/puffins/new', (req, res) => {
    res.render('new');
  })

  // create
  .post('/puffins', (req, res) => {
    Puffin.create(req.body.puffin, (err, newPuffin) => {
      if (err) {
        console.log(err.message || err);
      } else {
        // console.log(newPuffin);
        res.redirect('/');
      }
    });
  })

  // edit
  .get('/puffins/:id/edit', (req, res) => {
    Puffin.findById(req.params.id, (err, foundPuffin) => {
      if (err) {
        console.log(err);
      } else {
        res.render('edit', { puffin: foundPuffin });
      }
    });
  })

  // update
  .put('/puffins/:id', (req, res) => {
    Puffin.findByIdAndUpdate(req.params.id, req.body.puffin, (err, update) => {
      if (err) {
        console.log('ERROR', err.message || err);
      } else {
        // console.log('UPDATE', update);
        res.redirect('/');
      }
    });
  })

  // destroy
  .delete('/puffins/:id', (req, res) => {
    Puffin.findByIdAndRemove(req.params.id, (err, found) => {
      if (err) {
        console.log(err);
      } else {
        console.log('FOUNDIT', found);
        res.redirect('/');
      }
    });
  })
  .listen(3000);

1 Ответ

0 голосов
/ 04 августа 2020

Оказывается, у меня была функция, разрывающая пробел между «_method» и «DELETE»

                                    
                                                 
<form action="/puffins/<%- puffin._id %>?_method= DELETE" method="POST">
    <button>Delete</button>
</form>

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