2013-11-25 8 views
8

私は私の記事のモデルのための$リソースを返し工場を持っている:AngularJSリソース - PUTメソッドは、IDを取得していない

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

GETPOSTDELETEがうまく機能しますが、されていない更新(PUT) 。ここで私は、コードを使用している:更新を行う際に情報でarticleIDパラメータ満たされていない:

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

代わりに:なぜ

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

任意のアイデアそれはこの要求を作っている

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

?ありがとう!

+1

PUTは、URLではなく要求にコンテンツを送信する必要があります。 – Fals

+0

お返事ありがとうございます!あなたが言うように、実際にはコンテンツの中の記事IDを送信しています。私はAPIを計画したときにエラーを起こしたと思う。 – doobdargent

答えて

7

コメントに記載されているFalsのように、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" 
      } 
     } 
    }); 
}]); 
+0

いくつかのエラーのためにいくつかのエラーのために、私は角のgitで問題を起こし、彼らはこの部分では何もパラメータを使用しないと言った: '{ articleId: '@ id'、 _shop:window.user._shop } 'あなたがリクエストでグローバルに利用できるようにしたくないときは...別のリクエストでそれを設定しないと、あなたのモデルで似たようなことをして、その値をモデルから選び、あなたのURLが行くでしょう野生の – deadManN

+0

まだ今日、私は別のサービスを書いています、そして、私がそれらを使用しないとき、それは送信しますか?クエリ文字列:|代わりに... – deadManN

1

私は同じ問題を抱えていた、ここでの問題は、次の行のためだった:

articleId: '@_id', 

その行は次のようになります。

articleId: '@articleId', 

は再び定義する必要はない情報でarticleID。

関連する問題