2015-06-28 17 views
5

kullanıyorum:Kor Veri hasMany ilişki boş sonuç

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

emin değilim ama neden elimden görünüyor newsletter modelimin etiketlerini aldım. Ben ActiveModelAdapter kullanıyorum

:

:

import DS from 'ember-data'; 

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

API yanıtı

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 (ActiveModelSerializer kullanarak arka uç raylar)

Bülten için etiket listesinin nasıl alınacağını bilmiyorum. Bir JSBin içinde durumunuzu çoğaltılabilir ve iyi çalışıyor

>$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

deneyin 'newsletter_id eklemek için: 1' etiketler yüküne, bülten' tarihi: DS.belongsTo ('bülten', {asenk: true}) ' – artych

+0

cevabımı düzenledikten ben şeyi ilişkisi yok etiketi modelinde alakalı ve muhtemelen bir etiket olduğu için yanlıştır. Etiketler ve haber bültenlerini eşleştirmek için yükte yeterli bilgi var. – Techbrunch

+0

Ember-Data sürümü nedir? DS.ActiveModelAdapter kullanıyorsunuz değil mi? – artych

cevap

0

Tamam, bunun nedeni, bülteni modelim için gerekli olmayan bir özel seri hale getirici kullanıyorum. Sadece dosyayı kaldırmak sorunu> < çözüldü.

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]; 
     } 
    } 
    } 
});