2015-06-28 17 views
5

Ich verwende:Ember Daten hasMany Beziehung leer Ergebnis

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

Ich bin nicht sicher, warum, aber es scheint, dass ich kann, Die Tags für mein newsletter Modell nicht abrufen.

Ich verwende 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-Antwort (Schienen Backend ActiveModelSerializer):

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

Ich weiß nicht, wie Sie die Liste der Tags für einen Newsletter abrufen können. Ich habe versucht, dies den Ember Inspektor und die Konsole ($ E den ersten Newsletter enthält):

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

Try 'newsletter_id hinzuzufügen: 1 'to tags Nutzlast, da' Newsletter: DS.belongsTo ('Newsletter', {async: true}) ' – artych

+0

Ich habe meine Antwort bearbeitet ich die Beziehung nicht tun Im Tag-Modell ist relevant und es ist wahrscheinlich auch falsch, weil ein Tag viele Newsletters hat. In der Nutzlast sind genügend Informationen vorhanden, um Tags und Newslettern zu entsprechen. – Techbrunch

+0

Was ist die Ember-Data-Version? Sie verwenden DS.ActiveModelAdapter, richtig? – artych

Antwort

0

Ok, so stellt sich heraus, dass ich einen benutzerdefinierten Serializer für mein Newsletter-Modell verwendet, die nicht notwendig war. Das Entfernen der Datei löste das Problem> <.

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