2015-06-28 13 views
5

sto usando:Ember dati hasMany rapporto risultato vuoto

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

Io non so perché ma sembra che posso 'recuperare i tag per il mio modello newsletter.

sto usando 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') 
}); 

risposta API (rotaie backend usando ActiveModelSerializer):

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

Non so come recuperare l'elenco di tag per una newsletter. Ho provato questo utilizzando la finestra di ispezione brace e la consolle ($ E contenente la prima newsletter):

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

tenta di aggiungere 'newsletter_id: 1' ai tag di carico utile, dal momento che' newsletter: DS.belongsTo ('newsletter', {async: true}) ' – artych

+0

Ho modificato la mia risposta non lo faccio cosa la relazione nel modello di tag è rilevante ed è anche probabilmente errato perché un tag ha MOLTE newsletter. Ci sono abbastanza informazioni nel carico utile per abbinare tag e newsletter. – Techbrunch

+0

Che cos'è la versione di Ember-Data? Stai utilizzando DS.ActiveModelAdapter, giusto? – artych

risposta

0

Ok, quindi risulta che stavo usando un serializzatore personalizzato per il mio modello di newsletter che non era necessario. Basta rimuovere il file risolto il problema> <.

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