【发布时间】:2017-04-09 13:37:31
【问题描述】:
版本: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 响应中获取消息以采取相应的行动 - 如果有,请忽略此声明有点混乱。
任何帮助将不胜感激。
【问题讨论】:
-
你用的是什么序列化器?
-
使用 RESTAdapter。它适用于简单的 JSON 响应,但我想要 hasMany
标签: javascript ember.js ember-data ember-cli