2017-03-22 18 views
6

假設我有以下型號:如何使用store.createRecord()爲hasMany關係傳遞ID?

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

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

,我需要創建一個客戶通過標識的產品列表(中尚未從後端加載),一些沿此線:

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

但是隨着存儲期望的產品是DS.Model數組這個失敗:

出錯處理路線:指數斷言失敗:的 所有元素的hasMany關係必須是DS.Model的情況下,你通過 [1,2,3]

如何創建與它的關聯記錄IDS提供?

回答

1

錯誤在處理路徑:索引斷言失敗:的 所有元素的hasMany關係必須是DS.Model的實例,則通過 [1,2,3]錯誤

作爲你需要錯誤狀態傳遞DS.Model的實例,但是你只能創建使用createRecord實例,所以你可能需要做一些事情像下面,

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

如果相關記錄不前那麼你不能僅僅使用ID來創建它們。不過,你可以這樣做:

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