ngResource 応答でネストされたリソースを解決するためのオプションは何ですか?
ngResource でネストされたリソースのエンドポイントを解決することに関するいくつかの関連する質問がありましたが、この質問は、REST 応答にクエリ対象のコレクションにネストされた 2 番目のリソースが含まれている場合、特に 1 対 1 のマッピングがない場合に関するものです。たとえばpets/<id>/owner
、独自のリソースとして。
2 つのリソースがあるPets
としOwners
ます。
/ペットを取得:
[{
name: 'spark',
type: 'dog',
owner: '/owners/3/' # alternatively just '3' or the full object.
}]
開発者として、Owner
リソース全体を照会したい場合もあれば、リソースを照会したい場合もあり、その属性をリソース インスタンスPet
に自動的に解決したい場合もあります。owner
これは私の現在の解決策です:
.factory('Pet', function ($resource, Owner) {
var Pet = $resource('/pets/:id', {id: '@id'});
Pet.prototype.getOwner = function () {
return new Owner(this.owner); // or Owner.get({id: this.owner})
}
return Pet;
})
ここでの問題はたくさんあります。1 つには、誠実さがあります。この実装により、同じリソースの複数のインスタンスが可能になると思います。あとは実用性。また、追跡する追加の属性もあります (モデルを保存できるようにする場合は、単に;の代わりにowner
および)。getOwner()
owner
setOwner
代替ソリューションを に構築することもできますtransformResponse
が、ネストされたマッピングを持つすべてのリソースにそれを含めるのはハックのように思えます。