2013-02-18 123 views
1

我试图分析在我烬数据模型一个JSON数据集,但是,这将引发在HET控制台错误:麻烦费时的余烬数据JSON静态数据

Uncaught TypeError: Cannot call method '_create' of undefined 
    DS.Store.Ember.Object.extend.materializeRecord 
    DS.Store.Ember.Object.extend.findByClientId 

我在做什么错在这里?

这是我从服务器接收数据:

{ 
    "newsitems": [ 
    { 
     "date": "2013-02-10T15:00:00+01:00", 
     "id": "1", 
     "images": [ 
     { 
      "id": "1", 
      "value": "image.JPG" 
     }, 
     { 
      "id": "3", 
      "value": "anotherimage.jpg" 
     } 
     ], 
     "slug": "some-slug", 
     "summary": "some summary", 
     "text": "some text", 
     "thumb": { 
     "id": "2", 
     "value": "someimage.JPG" 
     }, 
     "title": "Some title", 
     "type": "1", 
     "videos": [ 
     { 
      "id": "AEOpX8tmiUI", 
      "value": "AEOpX8tmiUI" 
     }, 
     { 
      "id": "kxopViU98Xo", 
      "value": "kxopViU98Xo" 
     } 
     ] 
    } 
    ] 
} 

这是我的模型:

App.NewsitemThumb = DS.Model.extend({ 
    value: DS.attr('string'), 
    newsitem: DS.belongsTo('App.Newsitem') 
}); 

App.NewsitemImage = DS.Model.extend({ 
    value: DS.attr('string'), 
    newsitem: DS.belongsTo('App.Newsitem') 
}); 

App.NewsitemVideo = DS.Model.extend({ 
    value: DS.attr('string'), 
    newsitem: DS.belongsTo('App.Newsitem') 
}); 

App.Newsitem = DS.Model.extend({ 
    slug: DS.attr('string'), 
    type: DS.attr('string'), 
    title: DS.attr('string'), 
    summary: DS.attr('string'), 
    text: DS.attr('string'), 
    date: DS.attr('date'), 

    thumb: DS.belongsTo('App.NewsitemThumb'), 
    images: DS.hasMany('App.NewsitemImage'), 
    videos: DS.hasMany('App.NewsitemVideo') 
}); 

为了记录在案,以优化这些模型的任何建议,欢迎。为视频,图像和拇指制作3个模型感觉很奇怪。

回答

1

根据this issue,当您没有为您的适配器中的hasMany关系指定显式映射时,弹出此错误。

尝试定义你的店作为

App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: DS.RESTAdapter.extend({ 
    serializer: DS.RESTSerializer.extend({ 
     init: function() { 
     this._super(); 
     this.map("App.Newsitem", { 
      images: { embedded: "load" }, 
      videos: { embedded: "load" } 
     }); 
     } 
    })   
    }) 
});