0

我的后端回复find all请求:

User.find();

像这样

{ 'users' : [ user1_obj, user2_obj ] }

Ember-data 对此感到高兴。现在,如果我做一个简单的单个对象查找:

User.find('user1');

我尝试将后端配置为返回以下任何内容:

user1
{ 'user1' : user1_obj }
{ 'user' : { 'user1' : user1_obj } }
{ 'user' : user1_obj }

但这些都不起作用。我应该从后端返回什么来回复find("obj-id")请求?根据有关JSON ROOT的文档,正确的格式如下所示:

{ 'user' : user1_obj }

Ember 没有抱怨,但处理后的 Ember 对象有一个非常奇怪的结构,像这样:

对象递归

如您所见,_reference.record指的是最高记录。此外(此处未显示)_data字段为空。

什么可能导致这种奇怪的嵌套?

编辑

正如 mavilein 在他的回答中所链接的,JSON API 建议对单一资源使用不同的格式:

{ 'users' : [user1_obj] }

这意味着,与复数资源的格式相同。不确定 Ember 是否会吞下它,我现在检查一下。

4

2 回答 2

1

使用User.find()将期望 rootKey 复数并在您的内容中包含一个元素数组,响应格式为以下 json:

{
  users: [
    { id: 1, name: 'Kris' },
    { id: 2, name: 'Luke' },
    { id: 3, name: 'Formerly Alex' }
  ]
}

并且User.find(1)rootKey 是单数的,只有一个对象:

{
  user: {
    id: 1, name: 'Kris'
  }
}

这是一个演示这个工作的演示

于 2013-08-21T16:54:38.380 回答
1

按照这个规范,我会怀疑以下几点:

{ 
 'users' : [{
   "id": "1",
   "name" : "John Doe"
  },{
    "id": "2",
    "name" : "Jane Doe"
  }]
}

对于单一资源,规范说:

单一资源表示为 JSON 对象。但是,它们仍然被包裹在一个数组中:

{ 
 'users' : [{
   "id": "1",
   "name" : "John Doe"
  }]
}
于 2013-08-21T11:33:22.583 回答