2015-06-28 16 views
5

Używam:Ember danych hasMany związek pusty wynik

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

nie jestem pewien dlaczego, ale wydaje się, że mogę 't pobrać znaczniki dla mojego modelu newsletter.

Używam 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') 
}); 

odpowiedź API (backend szyn używając ActiveModelSerializer):

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

Nie wiem, jak odzyskać listę tagów do newslettera. Próbowałem to za pomocą Inspektora ember i konsolę ($ E zawierający pierwszy biuletyn):

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

Spróbuj dodać 'newsletter_id: 1 'do tagów ładowności, ponieważ' newslettera: DS.belongsTo ('biuletyn', {async: true}) ' – artych

+0

Mam edytowane moją odpowiedź nie mam rzeczą relacja w tagu model jest istotny i prawdopodobnie jest również niepoprawny, ponieważ znacznik zawiera wiele biuletynów. W treści jest wystarczająco dużo informacji, aby dopasować znaczniki i biuletyny. – Techbrunch

+0

Co to jest wersja Ember-Data? Używasz DS.ActiveModelAdapter, prawda? – artych

Odpowiedz

0

OK, więc okazało się, że użyłem niestandardowego serializatora do mojego modelu biuletynu, który nie był konieczny. Po prostu usunięcie pliku rozwiązało 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]; 
     } 
    } 
    } 
});