emberjs中未进行反序列化的对象的嵌套列表



我有一个/reports api,它返回一个类似于的输出

{
"data": {
"id": 87,
"type": "reports",
"attributes": {
"status": "STARTED",
"startdatetime": 1532511531000,
"enddatetime": 1533485380052,
"queries": [
{
"startdatetime": 1532511531000,
"enddatetime": 1533485380056,
"reportId": 87,
"id": "Q1"
}
]
}
}
}

模型看起来像:

model/report.js

status: DS.attr('string'),
startdatetime: DS.attr('number'),
enddatetime: DS.attr('number'),
queries: DS.hasMany('query')

model/query.js:

report : DS.belongsTo('report'),
startdatetime: DS.attr('number'),
enddatetime: DS.attr('number')

在我的组件(template.js(中,我试图访问查询,但它似乎无法正确地反序列化:

queriesLength: Ember.computed('report', function(){
return this.get('report').get('queries').length;
}

对于上面提到的json,运行queriesLength((将返回0。

1( console.log中没有问题。

2( 浏览器网络显示api正确地返回了输出。

3( 当访问startdatetime等其他属性时,它会返回正确的值。

模型/api响应是否缺少什么?

默认情况下,EmberData使用JSONAPI序列化程序。当来自其他模型的数据包含在响应的数据中时,它被称为embedded record

如果您可以控制后端,请切换到使用包含关系的JSONAPI规范。如果你不这样做,

切换到使用DS.RestSerializer和嵌入式记录Mixin:

https://emberjs.com/api/ember-data/3.3/classes/DS.EmbeddedRecordsMixin

使用生成器ember generate serializer report创建新的序列化程序

// serializers/report.js
import DS from 'ember-data';
export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
queries: { embedded: 'always' },
}
});

最新更新