AngularJS の $resource で再び躓く(@_id について)
今回のケースについては後日、ひととおりの解答を得られた。
app.factory("Contact", function($resource) {
return $resource("/api/contacts/:id", { id: "@_id" },
{
'create': { method: 'POST' },
'index': { method: 'GET', isArray: true },
'show': { method: 'GET', isArray: false },
'update': { method: 'PUT' },
'destroy': { method: 'DELETE' }
}
);
});
このコードは Recipes with Angular.js というサイトの Consuming REST APIs というページに書かれているものだが、Contact に $resource
を登録する際、URL のパラメータのデフォルト値として指定するオブジェクトが { id: "@id" }
ではなく { id: "@_id" }
となっている。そして、その解説も同ページの末尾部分に記されている。
In order to automatically map from id to the _id parameter we used a nice trick of the $resource service. Take a look at the second parameter of the Contact $resource definition: { id: "@_id" }. Using this parameter Angular will automatically set the URL parameter id based on the value of the model attribute _id.
拙訳はこんな感じ。
id
を自動的に_id
パラメータにマッピングするべく、我々は$resource
サービスのナイスなトリックを使いました。Contact の定義{ id: "@_id" }
の2番目のパラメータに注目。このパラメータを使えば、Angular は自動的にモデル属性の_id
の値に基づいて URL パラメータのid
を設定してくれます。