2015-06-28 61 views
5

我使用:灰烬数据的hasMany关系空的结果

  • ember-cli0.2.7
  • ember-data1.0.0-beta.18
  • ember1.12.0

我不知道为什么,但似乎我能检索我的newsletter型号的标签。

我使用ActiveModelAdapter

import DS from 'ember-data'; 

export default DS.ActiveModelAdapter.extend({ 
    namespace: 'api/v1', 
    host: 'http://localhost:3000' 
}); 

newsletter.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    title: DS.attr('string'), 
    tags: DS.hasMany('tag') 
}); 

tag.js

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    name: DS.attr('string') 
}); 

API响应(导轨使用ActiveModelSerializer后端):

{ 
    "newsletters": [ 
    { 
     "id": 1, 
     "title": "Panel Weekly", 
     "tag_ids": [ 
     1 
     ] 
    }, 
    {...} 
    ], 
    "tags": [ 
    { 
     "id": 1, 
     "name": "arts" 
    }, 
    {...} 
} 

我不知道如何检索通讯的标签列表。我想这使用余烬检查和控制台(含第一通讯$ E):

>$E.get('tags.length') 
0 
>$E.get('tags') 
Class {canonicalState: Array[0], store: Class, relationship: ember$data$lib$system$relationships$state$has$many$$ManyRelationship, record: Class, currentState: Array[0]…} 
>$E.get('title') 
"Panel Weekly" 
+0

尝试添加'newsletter_id:1'到标签的有效载荷,因为'通讯:DS.belongsTo(“通讯”,{异步:真})' – artych

+0

我已经编辑我的答案我不事关系在标签模型中是相关的,它也可能是不正确的,因为标签有许多新闻通讯。有效负载中有足够的信息来匹配标签和通讯。 – Techbrunch

+0

什么是Ember-Data版本?您正在使用DS.ActiveModelAdapter,对吗? – artych

回答

0

好吧,事实证明,我使用自定义序列器为我的通讯模型,这是没有必要的。只是删除文件解决了问题> <。

import DS from 'ember-data'; 

// http://stackoverflow.com/a/21075106/1447468 
export default DS.RESTSerializer.extend({ 
    serializeIntoHash: function(data, type, record, options) { 
    var properties = this.serialize(record, options); 
    for(var prop in properties){ 
     if(properties.hasOwnProperty(prop)){ 
     data[prop] = properties[prop]; 
     } 
    } 
    } 
});