2014-11-03 32 views
0

我收到以下错误造成类型错误,而使用DS.EmbeddedRecordsMixin时,我的记录已嵌入数据:EmbeddedRecordsMixin的hasMany嵌入式记录

TypeError: Cannot read property 'typeKey' of undefined 

我用灰烬CLI 0.1.2与Ember 1.7.0和灰烬数据1.0.0#beta11

我的适配器:

应用适配器 - /app/adapters/application.js(RestAdapter):

import DS from 'ember-data'; 
import config from '../config/environment'; 

export default DS.RESTAdapter.extend({ 
    namespace: config.APP.RestAdapterNamespace, 
    host: config.APP.SERVER_LOCATION 
}); 

适配器中的问题 - /app/adapters/screen.js(screenSlideGroups应该嵌入):

import ApplicationAdapter from './application'; 
import DS from 'ember-data'; 

export default ApplicationAdapter.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
     screenSlideGroups: { embedded: 'always' } 
    } 
}); 

型号:/app/models/screen.js数据的

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string'), 
    path: DS.attr('string'), 
    screenSlideGroups: DS.hasMany('screen-slide-group') 
}); 

实施例从API返回:

{ 
    "screen":[ 
    { 
     "id":1, 
     "name":"Weather", 
     "path":"weather", 
     "screenSlideGroups":[ 
      { 
       "id":1, 
       "screen":1, 
       "slideGroup":1, 
       "order":1 
      } 
     ], 
     "lastUpdated":"2014-09-18T18:26:25.69" 
    }, 
    { 
     "id":2, 
     "name":"Front Lobby", 
     "path":"frontlobby", 
     "screenSlideGroups":[ 

     ], 
     "lastUpdated":"0001-01-01T00:00:00" 
    } 
    ] 
} 

我也尝试从嵌入式记录删除screen,柜面背病房的参考可能会把它搞砸,但它没有什么区别。据我所知,我创建的EmbeddedRecordsMixin适配器可能根本无法使用。

对此可能出错的任何想法?

回答

0

原来我误读了文档,DS.EmbeddedRecordsMixin应该在串行器上,而不是在适配器上。

正确的执行情况如下:

/app/serializers/screen.js:

import DS from 'ember-data'; 

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
     screenSlideGroups: { embedded: 'always' } 
    } 
}); 
相关问题