【发布时间】:2013-10-24 17:54:22
【问题描述】:
有哪些选项可用于解析 ngResource 响应中的嵌套资源?
有一些关于解决 ngResource 中嵌套资源的端点的相关问题,但这个问题是关于 REST 响应何时包含嵌套在正在查询的集合中的第二个资源,尤其是一对一的映射,你会没有例如pets/<id>/owner 作为自己的资源。
假设有两个资源,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;
})
这里的问题很多。有诚信——一方面。我相信,这种实现允许同一资源的多个实例。然后是实用性。您还可以跟踪其他属性(owner 和 getOwner(),而不仅仅是 owner;如果您希望能够保存模型,可能是 setOwner)。
可以在 transformResponse 上构建替代解决方案,但将其包含在每个具有嵌套映射的资源中感觉就像是一种黑客攻击。
【问题讨论】:
标签: angularjs angularjs-resource