防爆preSS路由器CRUD API。无法删除 [英] Express Router CRUD API. Cannot DELETE
问题描述
好吧,我读的平均机本书,下面是例子。我试图找出什么地方错了我的code,所以它不会做任何删除请求。 GET,PUT和POST的工作原理应该。
Well, I'm reading the MEAN Machine book and following it's examples. I'm trying to figure out what's wrong with my code so it won't make any DELETE request. GET, PUT and POST works as should.
我有这样的code对我server.js:
I have this code on my 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' });
});
});
});
我有一组用户的模的MongoDB数据库,当我尝试使用邮差与本地主机:8080 / API /用户/ 5610e5576d827dc41fb8e6e,邮差说:
I have a set of users the Modulus MongoDB database and, when I try to use POSTMAN with localhost:8080/api/users/5610e5576d827dc41fb8e6e, POSTMAN says
Cannot DELETE /api/users/5610e5576d827dc41fb8e6e
,而我与摩根节点服务器说
while my Node server with Morgan says
DELETE /api/users/5610e5576d827dc41fb8e6e 404
为什么我得到一个404?我究竟做错了什么?
Why I'm getting a 404? What Am I doing wrong?
推荐答案
您已经放在的右括号放在()
在错误的地方。所以你定义你的删除
内部路由器把()
路由器:
You've placed closing brackets of put()
in wrong place. So you're defining your delete
router inside the put()
router:
这是正确的缩进后您的code:
This is your code after proper indentation:
.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' });
});
});
})
所以,只要移动删除
路由器之外把
路由器回调
这篇关于防爆preSS路由器CRUD API。无法删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!