防爆preSS路由器CRUD API。无法删除 [英] Express Router CRUD API. Cannot DELETE

查看:150
本文介绍了防爆preSS路由器CRUD API。无法删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好吧,我读的平均机本书,下面是例子。我试图找出什么地方错了我的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?

全部code

推荐答案

您已经放在的右括号放在()在错误的地方。所以你定义你的删除内部路由器把()路由器:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆