Express Router CRUD API。 不能删除

那么,我正在阅读MEAN机器书,并遵循它的例子。 我想弄清楚我的代码有什么问题,所以不会发出任何DELETE请求。 GET,PUT和POST的作品应该如此。

我有我的server.js这个代码:

app.all('*', function(req, res, next) { res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); res.header('Access-Control-Allow-Headers', 'X-Requested-With, content-type, Authorization'); next(); }); var apiRouter = express.Router(); apiRouter.route('/users/:user_id') .get( function (req, res) { User.findById( req.params.user_id, function (err, user) { if (err) res.send (err); res.json(user); }); }) .put( function (req, res) { User.findById(req.params.user_id, function (err, user) { if (err) res.send(err); if (req.body.name) user.name = req.body.name; if (req.body.username) user.username = req.body.username; if (req.body.password) user.password = req.body.password; user.save( function (err){ if (err) send (err); res.json({message: 'User updated'}); }); }) .delete( function (req, res) { User.remove({ _id: req.params.user_id }, function (err, user) { if (err) return res.send(err); res.json({ message: 'Deleted' }); }); }); 

});

我有一组用户Modulus MongoDB数据库,当我尝试使用localhost:8080 / api / users / 5610e5576d827dc41fb8e6e POSTMAN时,POSTMAN说

 Cannot DELETE /api/users/5610e5576d827dc41fb8e6e 

而我的节点服务器与摩根说

 DELETE /api/users/5610e5576d827dc41fb8e6e 404 

为什么我得到一个404? 我究竟做错了什么?

完整的代码

put()括号put()错误的地方。 所以你要在put()路由器里定义你的delete路由器:

这是正确缩进后的代码:

 .put( function (req, res) { User.findById(req.params.user_id, function (err, user) { if (err) res.send(err); if (req.body.name) user.name = req.body.name; if (req.body.username) user.username = req.body.username; if (req.body.password) user.password = req.body.password; user.save( function (err){ if (err) send (err); res.json({message: 'User updated'}); }); }) .delete( function (req, res) { // <===== defined inside 'put', User.remove({ _id: req.params.user_id }, function (err, user) { if (err) return res.send(err); res.json({ message: 'Deleted' }); }); }); }) 

所以,只要将路由器callback之外的delete路由器