假设我有以下型号:
// customer.js
DS.Model.extend({
products: DS.hasMany('product')
});
// product.js
DS.Model.extend({
customer: DS.belongsTo('customer')
});
我需要创建一个客户,其中包含ID(尚未从后端加载)的产品列表,其中包含以下内容:
this.get('store').createRecord('customer', {products: [1, 2, 3]});
但这失败了,因为商店希望产品是DS.Model数组:
处理路由时出错:index断言失败:所有元素 您传递的是hasMany关系必须是DS.Model的实例 [1,2,3]
如何使用ID提供的关联创建记录?
答案 0 :(得分:1)
处理路由时出错:index断言失败:所有元素 您传递的是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 :(得分:1)
如果相关记录不存在,则无法仅使用ID动态创建它们。但是,您可以这样做:
let customer = this.store.createRecord('customer', {});
customer.get('products').then(function() {
customer.get('products').addObject(this.store.createRecord('product', {/* ... */}));
});