2016-06-20 3 views
4

Mit Ember 2.6.0Erste Fehler: Sie benötigen modelFor einen Modellnamen auf das Geschäft der Methode zu übergeben

haben die folgenden Routen definiert:

Router.map(function() { 
    this.route('brands'); 
    this.route('brand', {path: '/brands/:brand_id'}); 
}); 

Das Modell für brand ist:

export default Model.extend({ 
    name: attr('string'), 
    description: attr('string'), 
    dateCreated: attr('date'), 
    lastUpdated: attr('date'), 
    regions: hasMany('region') 
}); 

Und das Modell für region ist:

export default Model.extend({ 
    name: attr('string'), 
    dateCreated: attr('date'), 
    lastUpdated: attr('date'), 
    brand: belongsTo('brand') 
}); 

Nun, wenn man versucht, /brands zuzugreifen ich dies in der Route tue:

export default Ember.Route.extend({ 
    model() { 
    return this.store.findAll('brand'); 
    } 
}); 

ich die folgende Fehlermeldung erhalten:

You need to pass a model name to the store's modelFor method

Das funktionierte vor der Zugabe der brand Route und region Beziehungen. Marke ist die Eltern, also bin ich mir nicht sicher, warum das nicht funktioniert.

UPDATE:

regions: hasMany('region') vom brand Modell entfernen können Dinge wieder arbeiten. Nicht sicher, warum es nicht mit der definierten Beziehung funktioniert.

+0

Verwenden Sie Pods? Was ist der vollständige Pfad Ihres Regionsmodells? – Timm

+0

Ich habe sowohl mit als auch ohne Pods ausprobiert. Derzeit verwende ich keine Pods. Der vollständige Pfad lautet also /app/models/region.js'. Brand ist gleich daneben im selben Ordner. – Gregg

Antwort

5

So stellte sich heraus, ich musste Serialisierer für jedes Objekt erstellen. Für Marke habe ich:

import RESTSerializer from 'ember-data/serializers/rest'; 
import DS from 'ember-data'; 

export default RESTSerializer.extend(DS.EmbeddedRecordsMixin, { 
    attrs: { 
     regions: {embedded: 'always'} 
    } 
}); 

Und für region ich habe:

import RESTSerializer from 'ember-data/serializers/rest'; 

export default RESTSerializer.extend({ 
}); 

Technisch funktioniert es ohne die Region Serializer, aber ich erhalte eine Warnung, dass Ember nicht regions innerhalb des region Modell finden konnten. Ich kann ein Ticket an ember senden, um vorzuschlagen, dass ich kein leeres RESTSerializer erstellen muss, nur um diese Warnung zu vermeiden.

+0

Wenn Sie die Regionen einbetten, sollte Ihre Beziehung 'regions: hasMany ('region', {async: false})' sein, da Ihre Beziehung beim Einbetten nicht asynchron ist (wenn Sie dies auslassen, werden die Ember-Daten standardmäßig async true) – jcbvm

+0

Das stimmt, aber es hat eigentlich nichts mit diesem Q & A zu tun, denn da die Daten bereits da sind, ist Ember schlau genug, das asynchrone: wahre Bit zu ignorieren. – Gregg

+0

Welche Version von Ember-Daten verwenden Sie? Dieser Fehler klingt, als würde er alte und neue Serializer-Implementierungen mischen (mit und ohne Konvertierung in JSON API). Was mir seltsam erscheint, wenn Sie eine aktuelle Version von ember-data verwenden. – jcbvm

Verwandte Themen