Javascript AngularJS$resource';获取';访问正确的API,但';把';和';邮政';不要

Javascript AngularJS$resource';获取';访问正确的API,但';把';和';邮政';不要,javascript,node.js,api,angularjs,angular-resource,Javascript,Node.js,Api,Angularjs,Angular Resource,跟进 我的控制器是这样设置的,带有Angular的$resource: $scope.updateProduct = $resource('/api/updateProduct/:product/:param/:value',{},{ query: {method:'GET'}, post: {method:'POST'}, save: {method:'PUT', params: {brand: '@brand', param:'@param', value:'@value'}},

跟进

我的控制器是这样设置的,带有Angular的
$resource

$scope.updateProduct = $resource('/api/updateProduct/:product/:param/:value',{},{
  query: {method:'GET'},
  post: {method:'POST'},
  save: {method:'PUT', params: {brand: '@brand', param:'@param', value:'@value'}},
  remove: {method:'DELETE'}
});
$scope.updateProduct.save({
    product : $scope.post._id, 
    param: 'likes', 
    value: $scope.user._id
  }); 
我的服务器运行在
NodeJS
ExpressJS
上。在我的控制台中,当调用
保存
操作时,我可以看到:

POST /api/updateBrand/<productid>/likes/fun,%20quirky%20loud,%20boho,%20hippy 200 22ms - 2.31kb
API代码

exports.updateProduct = function (req, res) {
    console.log("TEST")

    var product = req.params.product;
    var param   = req.params.param;
    var value   = req.params.value;
    var props = { $push: {} };

    if(param == 'userTags'){
        var oldVal = value;
        value = oldVal.match(/[-'"\w]+/g);
        props.$push[param];
        props.$push[param] = {$each: []};
        props.$push[param].$each = value;
    }else{
    var props = { $push: {} };
        props.$push[param] = value;       
    }
    db.products.update({"_id": ObjectId(product)}, props, function (err, record) {
        if (err || !(record)) {
            console.log("Lookup Error: " + err);
        } else{
            console.log("Updated " + product + " with " + param);
            console.log(record);
            res.json({obj:record})
        }
    });
};

服务器似乎不是在等待POST或PUT请求,而是根据您的配置等待GET请求

app.get('/api/updateProduct/:product/:param/:value', api.updateProduct);
根据expressjsapi(),您应该能够用任何有效的http动词替换get

app.VERB(path, [callback...], callback)
app.post('/api/updateProduct/:product/:param/:value', api.updateProduct);
app.put('/api/updateProduct/:product/:param/:value', api.updateProduct);

您可以显示服务器的代码吗?我可以,但它根本没有被访问,第一行是
console.log(“TEST”)
,无法访问。同样,当我使用
updateProduct.get()
而不是
updateProduct.save()
时,它工作得很好(因此
console.log()
正确地记录了日志),我认为您的服务器路由可能有问题。好吧,将其添加到上面的代码中。您在哪里告诉ExpressJS exports.updateProduct正在等待POST或PUT?看看ExpressJSAPI,它们指的是app.VERB(路径,[callback…],callback),其中VERB是请求的方法。在这里,你告诉它等待得到。
app.VERB(path, [callback...], callback)
app.post('/api/updateProduct/:product/:param/:value', api.updateProduct);
app.put('/api/updateProduct/:product/:param/:value', api.updateProduct);