1

我正在尝试在我的 ember 数据模型中解析 json 数据集,但这会在 het 控制台中引发错误:

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 个模型感觉很奇怪。

4

1 回答 1

1

根据这个问题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" }
        });
      }
    })          
  })
});
于 2013-02-18T19:08:06.837 回答