快速路由器删除-找不到404

时间:2018-07-26 08:09:43

标签: express ejs

我正在使用Express开发示例应用程序。简单的CRUD,一个学生有很多菜。

我正在尝试从dish中删除student,并且在到达delete路线时,即使我的代码对我来说正确,我仍然会收到404 not found 。这是我当前的设置

路线

var express = require('express');
var router = express.Router();
var DishesController = require('../controllers/dishesController');

router.delete('/:student_id/dishes/:dish_id', DishesController.delete);

控制器

var Student = require('../models/Student');

function destroy(req, res) {
  var params = req.params;
  var body = req.body;

  Student.findById(params.student_id, function(err, student) {
    student.dishes.id(params.dish_id).remove();
    student.save(function(err) {
      res.redirect('/');
    })
  });
}

module.exports = {
  create: create,
  delete: destroy
}

视图(ejs)

<% student.dishes.forEach(function(dish) { %>
    <p><%= dish.dish %></p>
    <p><%= dish.cuisine %></p><br>
    <form action="/<%= student._id %>/dishes/<%= dish._id %>?_method=DELETE" method="POST">
        <input type="submit" value="Delete This Dish">
    </form>
    <br>
<% }) %>

我得到的错误是

Not Found
404
NotFoundError: Not Found

具有较长的无用堆栈跟踪。当我在路由中放置一些控制台日志语句时,我可以告诉它没有达到目标,但是我不能说出原因。我做了一个类似的应用程序,它的工作,所以我不能告诉这个问题是什么。

有人看到我犯了一个错误,还是我需要添加的东西不存在?如果需要,我可以发布更多代码。

1 个答案:

答案 0 :(得分:0)

router.route('/:student_id / dishes /:dish_id')。get(DishesController.delete);