尝试从REST API加载ember数据模型时出错

时间:2017-04-08 17:33:44

标签: javascript ember.js ember-data ember-cli

版本: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响应中获取相应的行为 - 请忽略此语句,如果它令人困惑的是。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您需要确保使用RESTSerializer。默认情况下,新应用程序中的序列化程序是JSONAPISerializer,它会抛出您看到的错误。