【问题标题】:Error while trying to load ember data model from REST API尝试从 REST API 加载 ember 数据模型时出错
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 感谢您的建议 - 我按照您的建议进行了更改,但看到了不同的错误。现在我将您的答案标记为正确答案。我在stackoverflow.com/questions/37927705/… 发布了一个新问题,请看看您是否可以回答。再次感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2013-07-12
  • 2023-03-31
  • 2018-03-05
  • 2016-12-17
  • 1970-01-01
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多