Ресурс AngularJS - метод PUT не получает идентификатор

У меня есть фабрика, которая возвращает ресурс $ для моей модели Article:

angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
    return $resource('/api/v1/article/:articleId', {
        articleId: '@_id',
        _shop: window.user._shop
    }, {
        update: {
            method: 'PUT'
        }
    });
}]);

GET, POST а также DELETE работают хорошо, но не обновление (PUT). Вот код, который я использую:

Articles.update({articleId: '300000000000000000000001'}, function(article){
    console.log(article);
});

Это делает этот запрос:

PUT http://localhost:3000/api/v1/article?_shop=100000000000000000000001

вместо:

PUT http://localhost:3000/api/v1/article/300000000000000000000001?_shop=100000000000000000000001

Есть идеи, почему параметр: articleId не заполняется при обновлении? Спасибо!

2 ответа

Решение

Как отметил Фальс в комментарии, параметр articleId был в содержимом запроса. Поэтому я сделал небольшую хитрость, чтобы она также была в URI.

angular.module('ADI.Resources').factory("Articles", ['$resource', function($resource) {
    return $resource('/api/v1/article/:articleId', {
        articleId: '@_id',
        _shop: window.user._shop
    }, {
        update: {
            method: 'PUT',
            params: {
                articleId: "@articleId"
            }
        }
    });
}]);

У меня была та же проблема, проблема здесь была для следующей строки:

articleId: '@_id',

эта строка должна быть:

articleId: '@articleId',

articleId не должен быть определен снова.

Другие вопросы по тегам