【发布时间】:2014-03-16 20:27:04
【问题描述】:
我正在构建一个适配器来包装Keen.io API,到目前为止我已经能够成功加载项目资源,但是返回的对象如下所示:
{
partners_url: "/3.0/projects/<ID>/partners",
name: "Project Name",
url: "/3.0/projects/<ID>",
saved_queries: [ ],
events_url: "/3.0/projects/<ID>/events",
id: "<ID>",
organization_id: "<ORG ID>",
queries_url: "/3.0/projects/<ID>/queries",
api_key: "<API KEY>",
events: [
{
url: "/3.0/projects/<ID>/events/user_signup",
name: "user_signup"
},
{
url: "/3.0/projects/<ID>/events/user_converted",
name: "user_converted"
},
{
url: "/3.0/projects/<ID>/events/user_created_project",
name: "user_created_project"
}
]
}
排除很多杂乱无章的东西,Ember 使用RESTSerializer 映射name 和id 属性没有问题,但是如果我将events 关系添加到我的Project 模型它会爆炸:
Error while loading route: TypeError: Cannot set property 'store' of undefined
at Ember.Object.extend.modelFor (http://localhost:3000/assets/ember-data.js?body=1:9813:23)
at Ember.Object.extend.recordForId (http://localhost:3000/assets/ember-data.js?body=1:9266:21)
at deserializeRecordId (http://localhost:3000/assets/ember-data.js?body=1:10197:27)
at deserializeRecordIds (http://localhost:3000/assets/ember-data.js?body=1:10211:9)
at http://localhost:3000/assets/ember-data.js?body=1:10177:11
at http://localhost:3000/assets/ember-data.js?body=1:8518:20
at http://localhost:3000/assets/ember.js?body=1:3404:16
at Object.OrderedSet.forEach (http://localhost:3000/assets/ember.js?body=1:3247:10)
at Object.Map.forEach (http://localhost:3000/assets/ember.js?body=1:3402:10)
at Function.Model.reopenClass.eachRelationship (http://localhost:3000/assets/ember-data.js?body=1:8517:42)
根据我的调查,这似乎是因为它找不到将 Event 映射回 Project 的反比关系,因为没有父 ID。
是否可以在 Ember Data 中创建一个关系来支持这一点?或者是否可以修改序列化程序以在加载之前将projectId 附加到每个事件?
我正在使用 Ember 1.5.0-beta.4 和 Ember Data 1.0.0-beta.7+canary.f482da04。
【问题讨论】:
标签: ember.js ember-data keen-io