我有一个Rails API,它使用以下JSON响应:
/用户/ 1
{
"id": 1,
"email": "sjobs@apple.com"
}
/用户/ 1?嵌入=角色,存储
{
"id": 1,
"email": "sjobs@apple.com"
"store": {
"id": 1,
"name": "Apple Store"
},
"role": {
"id": 1,
"name": "Owner"
}
}
是否可以决定使用Ember.js获取哪些关系 - App.User.find(1)?我已经尝试了App.User.find({id:1,embed:'role'}),但是它将GET请求作为/ users?id = 1& embed = role发送到Rails控制器中的索引操作。
有没有更好的方法来解决这个问题?我有完全访问权限来修改API。对每个API请求进行侧载似乎有点矫枉过正,如果我可以根据查询参数确定关系,我会很棒。
答案 0 :(得分:2)
有没有更好的方法来解决这个问题?
我认为假设您使用RESTAdapter的最佳选择应该是将您的侧载加载为嵌入式,例如:
DS.RESTAdapter.map('App.User', {
role: { embedded: 'always' },
store: { embedded: 'always' }
};
这种方式role
和store
保存在同一记录中,因此不会产生单独的GET请求。
嵌入的两个可能值是:
始终:加载时嵌入子记录,并将其保存在同一记录中。
加载:加载时会嵌入子记录,但应将其保存为独立记录。为了使其工作,子记录必须具有ID。
希望它有所帮助。