这个Ember属于关系正在发挥作用,但我无法理解

时间:2015-08-03 21:26:02

标签: json ember.js relationships

我现在已经开发了一个应用程序大约一年了,所以我在2014年中期开始使用它,并且随着这些项目的进展,我们一直在升级ember.js和ember-cli。我现在在Ember 1.11。

编辑:应用程序适配器

var ApplicationAdapter = DS.RESTAdapter.extend( {
  namespace: 'api',
  host: null,
  setHost: Ember.on('init', function() {
    set(this, 'host', this.container._registry.resolve('config:environment').API_ENDPOINT);
  })

});

export default ApplicationAdapter;

我的JSON API返回一个主projects对象,以及其他侧载对象(如projectStatus)。我无法理解的是,由于我没有任何适配器或序列化程序来指定这一点,我如何能够使用返回的JSON,因为它看起来像这样:

{
  "projects" : {
    "id": 4462875
    "projectName" : "New business from Acme",
    "projectDescription" : "Just another great project",
    "pmlinks" : [ 1, 2],
    "statusLinks" : [ 1440 ],
    "commentsLinks" : [ 39 ]
  },
  "projectResources" : [ {
    "id" : 1,
    "name" : "Wile E. Coyote"
  }, {
    "id" : 2,
    "name" : "Roadrunner"
  }],
  "projectComments" : [ {
    "id" : 39,
    "projectComment" : "started the project",
  } ],
  "projectStatuses" : [ {
    "id" : 1440,
    "status" : "G",
    "trending" : "N",
    "comment" : null,
    "lastModifiedDate" : "2015-07-17T13:46:11.037+0000",
    "project" : 4462875
  } ],
}

我无法在Ember docs中找到推荐此内容的任何内容" *链接"关系的格式,实际上它建议使用更像status_ids的东西。但是它显示的示例并没有使用_ids,所以我更加困惑。

这是我的项目模型的片段:

statusUpdates: DS.hasMany('projectStatus'),
projectComments: DS.hasMany('projectComment'),
projectResources: DS.hasMany('projectResource'),

我想弄清楚的是我与schedule的新属关系,如何从API格式化JSON?如果项目对象具有类似"scheduleLinks": [10]的属性但,如果它类似于"schedule": 10"schedule_id": 10并且似​​乎是文档说什么应该工作。

修改 也许是因为像projectComments这样的其他对象以我的模型所期望的方式命名,并且它们都是从一个API同时返回的,它甚至不会影响到项目对象是?这只是为了查找关系,如果他们并非全部侧载?

1 个答案:

答案 0 :(得分:0)

侧载肯定是这里的事情。因为如果我改变" statusLinks" to" projectStatus"那么,既然我已经在project模型中建立了这种关系,那么它会尝试点击API,例如/api/projectstatuses/:id

所以似乎正在发生的事情是隐含地将关系从belongsTo侧连接起来;如果数据是侧载的,我不需要主对象上的任何链接或ID。