find(id)请求所期望的格式是什么?

时间:2013-08-21 10:53:52

标签: ember.js ember-data

我的后端回复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 Objects有一个非常奇怪的结构,如下所示:

object recursion

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

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

修改

由mavilein在他的回答中链接,JSON API建议使用不同的format来表示单数资源:

{ 'users' : [user1_obj] }

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

2 个答案:

答案 0 :(得分:1)

specification之后,我会怀疑以下内容:

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

对于单一资源,规范说:

  

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

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

答案 1 :(得分: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'
  }
}

Here a demo showing this working