2017-03-22 38 views
6

Przyjmijmy, mam następujące modele:Jak przekazać identyfikatory dla relacji hasMany za pomocą metody store.createRecord()?

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

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

I muszę stworzyć klientowi listy produktów według identyfikatorów (które jeszcze nie zostały załadowane z backend), coś na wzór tego:

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

Ale to się nie powiedzie, ponieważ sklep oczekuje, że produkty, które mają być tablicą DS.Model:

błąd podczas przetwarzania Trasa: indeks Assertion Failed: Wszystkie elementy związek hasMany musi być przypadki DS.Model, zdałeś [1,2,3]

Jak mogę utworzyć rekord z jego stowarzyszenia dostarczone przez identyfikatory ?

Odpowiedz

1

błąd podczas ustalania trasy: wskaźnik Twierdzenie Niepowodzenie: Wszystkie elementy związek hasMany musi być przypadki DS.Model, został przekazany [1,2,3] Błąd

Jak stany błędów, które trzeba przejść instancję DS.Model ale można tylko utworzyć instancję za pomocą createRecord więc może trzeba zrobić coś jak poniżej,

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

Jeśli powiązane rekordy nie ex w takim przypadku nie można ich tworzyć w locie tylko za pomocą identyfikatorów. Możesz jednak zrobić coś takiego:

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