0

我有一个使用以下 JSON 响应的 Rails API:

/用户/1

{
    "id": 1,
    "email": "sjobs@apple.com"
}

/users/1?embed=role,store

{
    "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 请求进行旁加载似乎有点过头了,如果我可以根据查询参数决定关系,我会很棒。

4

1 回答 1

2

有没有更好的方法来处理这个?

我想假设您使用 RESTAdapter 的最佳选择应该是将您的侧加载定义为嵌入式,例如:

DS.RESTAdapter.map('App.User', {
  role: { embedded: 'always' },
  store: { embedded: 'always' }
};

这种方式rolestore保存在同一记录中,因此不会导致单独的 GET 请求。

Embedded 的两个可能值是:

always:加载时嵌入子记录,并保存嵌入在同一条记录中。

load:加载时嵌入子记录,但应保存为独立记录。为了使它起作用,子记录必须有一个 ID。

希望能帮助到你。

于 2013-07-08T11:30:49.753 回答