Ember.js嵌入式记录不';行不通
我有一个类似json的Ember.js嵌入式记录不';行不通,ember.js,ember-data,ember-cli,Ember.js,Ember Data,Ember Cli,我有一个类似json的 { "meta":{ "per":20, "page":1, "total":2 }, "users":[ { "id":119506, "first_name":"erglk", "last_name":"wfe", "email":"bent@exemple.com", "groups":[
{
"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"
}
]
}
]
}
目前访问用户没有问题,但访问组数组时遇到一些困难。我试过有很多
和属于
,但都没有成功。我犯了错误。
我读过几篇关于这方面的文章,但都没有成功
如果我在模型中声明:
export default DS.Model.extend({
first_name: DS.attr('string'),
last_name: DS.attr('string'),
email: DS.attr('string'),
groups: DS.attr('group')
});
我得到:处理路由时出错:用户断言失败:找不到“组”的转换错误:断言失败:找不到“组”的转换我们使用
DS.attr
告诉Ember此字段是模型的属性,并且可以选择指定此属性的类型。默认情况下,仅允许的类型为字符串
、数字
、布尔值
和日期
。为了支持自定义类型,应该定义特殊类(转换)。这就是余烬试图通过此错误消息告诉您的内容。如何定义这样的类,您可以找到
但是,您不需要为任务定义自定义转换。您需要定义一种关系:
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,如官方中所述。我可以向您保证,它的工作原理与这里描述的一样。我们使用
DS.attr
告诉Ember此字段是模型的属性,并且可以选择指定此属性的类型。默认情况下,仅允许的类型为字符串
、数字
、布尔值
和日期
。为了支持自定义类型,应该定义特殊类(转换)。这就是余烬试图通过此错误消息告诉您的内容。如何定义这样的类,您可以找到
但是,您不需要为任务定义自定义转换。您需要定义一种关系:
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,如官方中所述。我可以向您保证,它的工作原理与这里描述的一样。我们使用
DS.attr
告诉Ember此字段是模型的属性,并且可以选择指定此属性的类型。默认情况下,仅允许的类型为字符串
、数字
、布尔值
和日期
。为了支持自定义类型,应该定义特殊类(转换)。这就是余烬试图通过此错误消息告诉您的内容。如何定义这样的类,您可以找到
但是,您不需要为任务定义自定义转换。您需要定义一种关系:
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,如官方中所述。我可以向您保证,它的工作原理与这里描述的一样。我们使用
DS.attr
告诉Ember此字段是模型的属性,并且可以选择指定此属性的类型。默认情况下,仅允许的类型为字符串
、数字
、布尔值
和日期
。为了支持自定义类型,应该定义特殊类(转换)。这就是余烬试图通过此错误消息告诉您的内容。如何定义这样的类,您可以找到
但是,您不需要为任务定义自定义转换。您需要定义一种关系:
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,如官方中所述。我可以向您保证,它的工作原理与上面描述的一样。我遇到了同样的问题,并根据Gennady&Beni的回答找到了一个解决方案,但我还是花了一些时间才开始运行 看 我创建了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}),
});
然后模型加载了嵌入的属性 我遇到了同样的问题,根据Gennady&Beni的回答,我找到了一个解决方案,但我还是花了一段时间才开始运行 看 我创建了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}),
});
然后模型加载了嵌入的属性 我遇到了同样的问题,根据Gennady&Beni的回答,我找到了一个解决方案,但我还是花了一段时间才开始运行 看 我创建了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}),
});
然后模型加载了嵌入的属性 我遇到了同样的问题,根据Gennady&Beni的回答,我找到了一个解决方案,但我还是花了一段时间才开始运行 看 我创建了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}),
});
然后模型加载了嵌入的属性 您使用的是哪个版本的Ember数据和哪个适配器/序列化程序?@TylerIguchi Ember 2和RestSerializer您使用的是哪个版本的Ember数据和哪个适配器/序列化程序?@TylerIguchi Ember 2和RestSerializer您使用的是哪个版本的Ember数据和哪个适配器/序列化程序?@TylerIguchi Ember 2和RESTSerializerWhatEmber数据的版本以及您使用的适配器/序列化程序是什么?@TylerIguchi Ember 2和RestSerializerTanks@gennady dogaev。我在文档中使用inside
attrs:{groups:{embedded:'always'}
设置了相同的RESTSerializer。我还在models/group.js:export default DS.Model.extend({user:DS.belongsTo('user'),name:DS.attr('string'),});`但当我尝试转到页面时,我得到了:处理路由时出错:用户断言失败:将类传递到存储方法已被删除。请传递dasherized字符串,而不是未定义的
。他正在等待其他内容…错误似乎来自我的用户路径:export default Ember.route.extend({model(params){return this.store.query('user',params);})代码>您使用什么适配器?REST还是JSON?对于您的响应结构,您应该使用RESTAdapterA RESTAdapter.:/当我从模型中删除groups:DS.hasMany('group')
时,它也会再次起作用。请尝试将isNewSerializerAPI:true
属性添加到序列化程序中。我不确定它是否有用,但值得一试:export default DS.RESTSerializer.extend(DS.Embedded