【问题标题】:Ember data model error - You need to pass a model name to the store's modelFor method - for JSON responseEmber 数据模型错误 - 您需要将模型名称传递给商店的 modelFor 方法 - 用于 JSON 响应
【发布时间】:2017-04-10 01:16:08
【问题描述】:

版本:Ember 2.11

我正在尝试使用 Ember 数据模型从 REST API 加载数据,但失败并显示错误消息

           ember.debug.js:17634 Assertion Failed: You need to pass a model 
           name to the store's modelFor method
           Error
           at assert (http://localhost:4200/assets/vendor.js:16249:13)
           at Object.assert 
            (http://localhost:4200/assets/vendor.js:27921:34)
           at assert (http://localhost:4200/assets/vendor.js:76154:37)
           at Class.modelFor 
           (http://localhost:4200/assets/vendor.js:86032:41)
            at Class._internalModelForId 
            (http://localhost:4200/assets/vendor.js:85168:29)

这是我的代码:

序列化器/sfresult.js

              import DS from 'ember-data';
                 export default DS.RESTSerializer.extend({

                });

序列化器/sfresults.js

              import DS from 'ember-data';
                 export default DS.RESTSerializer.extend({

                });

models/sfresult.js

              import DS from 'ember-data';
             export default  DS.Model.extend({
              sfresults: DS.hasMany('sfresults', { async: false }),
              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')
          });

控制器代码:

                 let sfdata = this.store.query('sfresult',{ 'searchText': inputSearchText, 'searchType' : 'SF' } );

JSON 响应:

         { 
         "sfresult":{  
         "message":"SUCCESS",
           "sfresults":[  
               {  
               "viewScore":"100.0",
                "caseNumber":"000005462",
                "id":"1d725883-15f2-4f18-927c-b14455440458",
                "url":"url1",
                "title":"title",
                 "description":"",
                 "lastModifiedDate":"12/29/16"
                },
               {  
                  "caseNumber":"00007082",
                   "status":"Closed",
                  "id":"b79c0397-f544-45f0-8b91-e2bb7a386ebf",
                  "url":"ur2",
                   "title":"title1?",
                   "description":"",
                   "messageId":"500E000000DPA33IAH",
                   "lastModifiedDate":"08/16/16"
                }

              ]
             "id":"2b238d70-01ce-4604-913f-29d4c5eeba60"
         }

      }

我想获得 sfresult 并对其进行迭代以在 UI 中显示它。在 Ember 选项卡中,我可以看到数据正在加载到 sfresult 并且在 sfresults 对象中看不到任何东西。我尝试了很多组合,但无法使其发挥作用。有人可以帮忙吗?

【问题讨论】:

  • @ebrahim-pasbani 你对此有什么想法吗?

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


【解决方案1】:

如果您还没有解决这个问题,请尝试像这样更新 serializer/sfresult.js

import DS from 'ember-data';

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, {
    attrs: {
        sfresults: { serialize: 'ids', deserialize: 'records' }
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多