节点快速路由参数没有捕获

时间:2016-03-22 00:32:42

标签: angularjs express params

我有这个

    router.put('/user:resourceId', function(req, res) {

        User.findOneAndUpdate({resourceId: req.params.resourceId}, req.body, function(err, user) {
            if (err)
                res.send(err);

            res.send(user);
        });
    });

在我的角度代码中我有

    updateResource: function(resource){
        var self = this;
        return $http.put('api/resources/resource', resource, {params:{resourceId:resource.resourceId}}).then(function(response){
            return response.data;
        }, function(err){
            $log.error('Error updating', err);
        });
    }

为什么这条道路没有被捕获?当我移除params时它会起作用。

1 个答案:

答案 0 :(得分:1)

您的路线看起来有点偏,请尝试以下方法:

router.put('/user/:resourceId', function(req, res) {
  ...
});

对于看似如下的网址:/user/123,其中req.param.resourceId为123。

看起来您的角度代码指向/api/resources/resource,所以我可以理解为什么它可能与/user/:resourceId的Express路线不匹配 - (除非您的Express路由器设置为处理某事的请求如下所示:/api/resources/resource/user/:resourceid