我仍然在学习ember.js,并遇到一个包含ember数据而未解析模型中查找关系的障碍。我有一个模型“网站”,它基本上是每个其他模型的查找表,以区分基于位置的数据。Ember数据关系未解决
在这一点上,我做错了或丢失一个关键概念 - 既可能...(或者也许是凌晨小时!)
网站模式(即查找表)
import DS from 'ember-data';
export default DS.Model.extend({
code: DS.attr(),
name: DS.attr(),
});
该网站模式将不得不把所有其他车型的hasMany关系(将在约12时完成)
副型号
import DS from 'ember-data';
import { belongsTo } from 'ember-data/relationships';
export default DS.Model.extend({
site: belongsTo('site'),
last: DS.attr(),
first: DS.attr(),
active: DS.attr('boolean'),
fullName: Ember.computed('first', 'last', function() {
return `${this.get('first')} ${this.get('last')}`;
}),
});
在某些其他模型中,“关联模型”也将与“网站”一起查找。
我提供了通过JSON API规范的数据,但我不包括关系数据,因为据我了解,烬数据应该是拉低使用本网站id属性的网站数据。
{
"links": {
"self": "/maint/associates"
},
"data": [
{
"type": "associate",
"id": "1",
"attributes": {
"site": "6",
"last": "Yoder",
"first": "Steven",
"active": "1"
},
"links": {
"self": "/associates/1"
}
}
]
}
在我的模板文件中,我引用了associate.site,它给了我一个错误。
<(未知的mixin):ember431>
如果我使用associate.code或。名称相匹配的网站模式,什么都不会显示在模板中。 “网站”表中的代码是我真正想要在模板中显示的数据。
那么显而易见的问题:
我错了这灰烬数据应该解决这个还是我需要 包括在我的API响应的关系?
我意识到,我在“准”的模式属于关联只引用 网站,而我想site.code,所以如何使这种关系 已知或我的“准”的模式进入该领域?
我没有在'site'模型中包含hasMany关系,因为 会有很多。我需要在 其他模型中做相反的关系吗?我见过的例子并不都显示hasMany 关系的设置。
当我在余烬检查模型中看到模型中包含的网站字段不是 。即使我没有得到正确的数据 它应该仍然显示?
我喜欢烬到目前为止,只需要了解和克服这个障碍
更新:我的后端JSON库只会产生关系链接基于当前的测试,这将是
"related": "/streams/1/site"
但烬数据不会调用
“关联”: “/网站/ 1”
来解决关系
所以@Adam Cooper的答案是正确的,如果您生成链接,他回答,或者如果您只能生成基于当前规范的链接。
我需要看看我的后端库,以确定如何更改json匹配。 – gmart
你使用哪个后端库?您可能只能切换到其他适配器。 –
抱歉点击输入太快。 php后端使用jsonapi by lode生成,Slim用于路由。 jsonapi生成: “self”:“/ streams/1/relationships/site” 它与当前的json API规范匹配。花了点时间来添加正确的路由。我想标记为答案,因为Ember现在正在请求数据,但是ember检查器显示空字段值的记录。控制台显示 记录与响应值,只是没有进入商店。 – gmart