我有一个喜欢
的json{
"meta":{
"per":20,
"page":1,
"total":2
},
"users":[
{
"id":119506,
"first_name":"erglk",
"last_name":"wfe",
"email":"bent@exemple.com",
"groups":[
{
"id":5282,
"name":"test"
},
{
"id":8880,
"name":"everybody"
}
]
},
{
"id":119507,
"first_name":"eriglk",
"last_name":"wife",
"email":"benit@exemple.com",
"groups":[
{
"id":5284,
"name":"testf"
},
{
"id":8880,
"name":"everybody"
}
]
}
]
}
目前访问用户没有问题,但访问groups数组时遇到了一些困难。我已经尝试hasMany
和belongsTo
但没有成功。我有错误。
我读过很少关于EmbededRecordMixin但没有任何成功的文章。
如果我在我的模特中宣布:
export default DS.Model.extend({
first_name: DS.attr('string'),
last_name: DS.attr('string'),
email: DS.attr('string'),
groups: DS.attr('group')
});
我得到:处理路由时出错:用户断言失败:无法找到' group'错误:断言失败:无法找到' group'
的转换答案 0 :(得分:2)
我们使用DS.attr
告诉Ember该字段是模型的属性,并且可选地我们可以指定此属性的类型。默认情况下,只允许的类型为string
,number
,boolean
和date
。要支持自定义类型,应定义特殊类(转换)。这是Embers试图通过此错误消息告诉您的内容。如何定义这样的类,您可以找到here
但,您不需要为您的任务定义自定义转换。您需要定义关系:
export default DS.Model.extend({
first_name: DS.attr('string'),
last_name: DS.attr('string'),
email: DS.attr('string'),
groups: DS.hasMany('group', {async: false})
});
并使用EmbeddedRecordMixin,如官方docs中所述。我可以向你保证,它的工作原理如此。
答案 1 :(得分:1)
我遇到了同样的问题,并找到了Gennady& amp; Beni的回应,但我仍需要一段时间才能起床和跑步。
请参阅http://emberjs.com/api/data/classes/DS.EmbeddedRecordsMixin.html
我创建了app / serializers / user.js:
import DS from 'ember-data';
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
isNewSerializerAPI: true,
attrs: {
groups: { embedded: 'always' },
}
});
并在app / model / user.js
中export default DS.Model.extend({
groups: DS.hasMany('group', {async: false}),
});
然后模型立即加载了嵌入的属性!