2017-03-22 2 views
6

Angenommen, ich habe die folgenden Modelle:Wie kann ich IDs für hasMany-Beziehung mit store.createRecord() übergeben?

// customer.js 
DS.Model.extend({ 
    products: DS.hasMany('product') 
}); 

// product.js 
DS.Model.extend({ 
customer: DS.belongsTo('customer') 
}); 

Und ich brauche einen Kunden mit einer Liste der Produkte von IDs zu erstellen (, die von Back-End-geladen noch nicht ist), etwas entlang der Linien von dieser:

this.get('store').createRecord('customer', {products: [1, 2, 3]}); 

Aber dies nicht gelingt, wie der Laden die Produkte erwartet ein Array von DS.Model zu sein:

Fehler bei der Verarbeitung Fehlgeschlagen Index Assertion: Route Alle Elemente eine hasMany Beziehung Instanzen DS.Model sein muss, übergeben Sie [1,2,3]

Wie kann ich einen Datensatz mit den Verbänden von IDs versehen erstellen ?

Antwort

1

Fehler bei der Verarbeitung Route: Index Assertionsfehler: Alle Elemente eine hasMany Beziehung Instanzen DS.Model sein muss, übergeben Sie [1,2,3] Fehler

Da die Fehlerzustände, die Sie benötigen Instanz DS.Model passieren, aber Sie können nur Instanz mit create erstellen, so dass Sie wie unten etwas, was möglicherweise tun müssen,

let product1 = this.store.createRecord('product',{customer:1}); 
    let product2 = this.store.createRecord('product',{customer:2});  
    return this.get('store').createRecord('customer', {products:[product1,product2]}); 
1

Wenn verknüpften Datensätze nicht ab ist dann können Sie sie nicht im laufenden Betrieb nur mit IDs erstellen. Allerdings könnte man so etwas tun:

let customer = this.store.createRecord('customer', {}); 
customer.get('products').then(function() { 
    customer.get('products').addObject(this.store.createRecord('product', {/* ... */})); 
}); 
Verwandte Themen