我正在使用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
具有较长的无用堆栈跟踪。当我在路由中放置一些控制台日志语句时,我可以告诉它没有达到目标,但是我不能说出原因。我做了一个类似的应用程序,它的工作,所以我不能告诉这个问题是什么。
有人看到我犯了一个错误,还是我需要添加的东西不存在?如果需要,我可以发布更多代码。
答案 0 :(得分:0)
router.route('/:student_id / dishes /:dish_id')。get(DishesController.delete);