2016-06-03 4 views
2

Ich erhalte diesen Fehler, wenn ich versuche, den JSON vom Backend zu konsumieren. Ich benutze Ember CLI Version 2.5.0 und den RestAdapter.Ember-Datenfehler: "Assertion Failed: Sie müssen einen Modellnamen an die ModelFor-Methode des Geschäfts übergeben"

Hier ist meine Routen/products/index.js wie folgt aussieht:

export default Ember.Route.extend({ 
    actions: { 
    [...] 
    }, 
    model: function() { 
    return this.store.findAll('product'); 
    } 
}); 

Und hier ist es, was meine Json wie folgt aussieht:

{ 
    "products":[ 
     { 
     "id":9, 
     "name":"Product A", 
     "price_cents":1500, 
     "margin_cents":0, 
     "commission":0, 
     "expiration":null, 
     "track_stock":false, 
     "stock_amount":5, 
     "brand":{ 
      "id":2, 
      "name":"SuperPet" 
     }, 
     "group":{ 
      "id":1, 
      "name":"Group A" 
     } 
     }, 
     { 
     "id":8, 
     "name":"Product B", 
     "price_cents":1500, 
     "margin_cents":0, 
     "commission":0, 
     "expiration":null, 
     "track_stock":false, 
     "stock_amount":5, 
     "brand":{ 
      "id":1, 
      "name":"Whiskas" 
     }, 
     "group":{ 
      "id":1, 
      "name":"Group B" 
     } 
     } 
    ], 
    "meta":{ 
     "pagination":{ 
     "per_page":null, 
     "total_pages":4, 
     "total_objects":10 
     } 
    } 
} 

Und auf Wunsch, hier ist das Modell:

import DS from 'ember-data'; 

const { attr, belongsTo } = DS; 

export default DS.Model.extend({ 
    name: attr('string'), 
    priceCents: attr('number'), 
    marginCents: attr('number'), 
    comission: attr('number'), 
    expiration: attr('date'), 
    trackStock: attr('boolean'), 
    stockAmount: attr('number'), 

    brand: belongsTo('brand') 

}); 
+0

Können Sie Ihr Modell veröffentlichen? –

+0

@ MarekGrác, fertig. – JayJay

+0

Können Sie Ihren Adapter, Serializer (falls vorhanden) und Stack-Trace von der Konsole aus eingeben, von welcher Zeile kommt der Fehler? –

Antwort

3

Sie haben die Marke: belongsTo ('Marke')

aber Sie haben die Gruppe vergessen: belongsTo ('group')

auch .. diese beiden (Marke, Gruppe) müssen mit dem DS.EmbeddedRecordsMixin im Produkt-Serialisierer deklariert werden, wenn Sie sie einbetten möchten auf diese Weise

+0

Vielen Dank für das Absenden dieser Antwort. Ich habe sie verwendet, als ich versucht habe, das Problem zu beheben. Obwohl ich es schließlich geschafft habe, werde ich keine Antworten als richtig markieren, da ich nicht genug Erfahrung mit dem Framework habe. Außerdem habe ich Ember for React für dieses Projekt abgelöst. (seufz!) – JayJay

5

Ich hatte das gleiche Problem. Dies funktionierte für mich:

//app/serializers/product.js 
import DS from 'ember-data'; 
import Ember from 'ember'; 

export default DS.RESTSerializer.extend(DS.EmbeddedRecordsMixin,{ 
    attrs: { 
     brand: { embedded: 'always' }, 
     group: { embedded: 'always'} 
    } 
}); 
+0

Vielen Dank für das Einreichen dieser Antwort, ich habe das gleiche getan. Obwohl ich es schließlich geschafft habe, werde ich keine Antworten als richtig markieren, weil ich nicht genug Erfahrung mit dem Framework habe. Außerdem habe ich Ember for React für dieses Projekt abgelöst. (seufz!) – JayJay

+1

@JayJay Es ist sicher, dies als die Antwort zu markieren. Ich habe lange mit Ember zusammengearbeitet und stimme zu, dass dies richtig ist. –

Verwandte Themen