我现在已经开发了一个应用程序大约一年了,所以我在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同时返回的,它甚至不会影响到项目对象是?这只是为了查找关系,如果他们并非全部侧载?
答案 0 :(得分:0)
侧载肯定是这里的事情。因为如果我改变" statusLinks" to" projectStatus"那么,既然我已经在project
模型中建立了这种关系,那么它会尝试点击API,例如/api/projectstatuses/:id
。
所以似乎正在发生的事情是隐含地将关系从belongsTo侧连接起来;如果数据是侧载的,我不需要主对象上的任何链接或ID。