版本:Ember 2.11
我正在尝试使用Ember数据模型从REST API加载数据,但它失败并显示错误消息 “ ember.debug.js:17634 TypeError:无法读取未定义的属性'type' 在Class._pushInternalModel(store.js:2005)
以下是更多详情: 1. REST API响应是:
{
"sfresults":[
{
"url":"https://google.com/1",
"title":"Titl1",
"description":"Description1",
"type":"KB",
"lastModifiedDate":"12/23/16",
"viewScore":"86.12006476690622",
"caseNumber":"case1",
"id":"cd4ac3e8-c3ac-4be5-ad11-c62a85ddf289"
},
{
"url":"https://google.com/2",
"title":"Titl2",
"description":"Description2",
"type":"KB",
"lastModifiedDate":"12/23/16",
"viewScore":"86.12006476690622",
"caseNumber":"case2",
"id":"cd4ac3e8-c3ac-4be5-ad11-c62a85ddf289"
},
],
"message":"SUCCESS",
"id":"3bd116c7-db63-4277-8ace-a7ea846a04ee"
}
控制器代码:
let sfdata = this.store.query('sfresult',{ 'searchText': inputSearchText, 'searchType' : 'SF' } );
this.set('sfresult', sfdata);
我的模特
sfresult.js
import DS from 'ember-data';
export default DS.Model.extend({
sfresults: DS.hasMany('sfresults'),
message: DS.attr('string')
});
sfresults.js
import DS from 'ember-data';
export default DS.Model.extend({
title: DS.attr('string'),
description: DS.attr('string'),
caseNumber: DS.attr('string'),
lastModifiedDate: DS.attr('string'),
type: DS.attr('string'),
url: DS.attr('string'),
searchText: DS.attr('string'),
messageId: DS.attr('string')
});
export default DS.RESTAdapter.extend({
host: 'http://localhost:8080',
namespace: 'server'
});
然后我想迭代sfresult并在UI中显示它。但是一旦API调用响应返回,就无法加载到ember数据模型中。因上述错误而失败。
注意:如果我尝试没有hasMany模型它工作正常 - 意味着json响应有元素数组并且只使用没有sfresult的sfresults模型,但是想要在JSON响应中获取相应的行为 - 请忽略此语句,如果它令人困惑的是。
非常感谢任何帮助。
答案 0 :(得分:0)
您需要确保使用RESTSerializer。默认情况下,新应用程序中的序列化程序是JSONAPISerializer,它会抛出您看到的错误。