0

我正在使用 Ember 1.5 构建 Web 应用程序,并使用 Ember 模型 0.0.11 将应用程序链接到 API。我目前无法让 Ember 模型使用嵌套的 API 端点。

例如,我的应用程序有一个User模型,它hasMany与模型有关系Post。现在,当我想为某个用户加载帖子时,我想要Post.findQuery('user_id', {user_id});访问GET /users/{user_id}/posts端点的方法。相反,Ember 模型解决方案似乎更喜欢将查询作为参数发送到GET /posts端点。

Ember ModelRESTAdapter确实允许轻松定制,但在我开始编写完全定制的代码之前,RESTAdapter我很想知道是否有人已经这样做了,以及他们是如何解决问题的。

4

1 回答 1

0

我们处理嵌套 API 路由的解决方案是使用请求的有效负载返回链接哈希。如果您可以更改 API 输出,那么这是目前的方法。例如,在请求工作区时,返回的 JSON 如下所示(请原谅转义字符):

{
   "data":
      {
         "object":"workspace",
         "id":"wrk_krVZWGaJ",
         "organization_name":"Legros, Klein and Boehm",
         "workspace_name":"Legros, Klein and Boehm",
         "workspace_path":"legros, klein and boehm",
         "status":true,
         "credit_production":7,
         "credit_revision":16,
         "links":{
            "projects":"\/v1\/workspaces\/wrk_krVZWGaJ\/projects",
            "productions":"\/v1\/workspaces\/wrk_krVZWGaJ\/productions",
            "subscription":"\/v1\/workspaces\/wrk_krVZWGaJ\/subscription",
            "assets":"\/v1\/workspaces\/wrk_krVZWGaJ\/assets",
            "descriptions":"\/v1\/workspaces\/wrk_krVZWGaJ\/descriptions",
            "roles":"\/v1\/workspaces\/wrk_krVZWGaJ\/roles",
            "registrations":"\/v1\/workspaces\/wrk_krVZWGaJ\/registrations",
            "users":"\/v1\/workspaces\/wrk_krVZWGaJ\/users"
         }
      }
}

该模型将链接定义为 async hasMany 关系,即DS.attr('projects', {async: true}). 从商店加载工作区时,不包括链接的项目。当您使用{{#each workspace.projects}}workspace.get('projects')其他任何地方时,ember-data 将向 发出 GET 请求/v1/workspaces/wrk_krVZWGaJ/projects/,而不是/projects/. 尼托,嗯?

有关RESTAdapter findHasMany 方法的更多详细信息。

于 2014-08-30T20:06:22.463 回答