在一次性设置参考时,以多对多关系插入的正确方法是什么?我不想先创建对象,然后在另一步中设置引用。
Product.belongsToMany(models.Aisle, { through: 'AisleProduct' });
Aisle.belongsToMany(models.Product, { through: 'AisleProduct'});
var product = models.Product
.build({
AisleId:[1,2] // This does NOT work!
});
product.save();
这不起作用
var product = models.Product.build({});
product.setAisles(AisleId:[1,2]);
product.save();
当setAisles
尝试保存尚未拥有id的对象并抛出异常
答案 0 :(得分:0)
您需要先创建Aisles。 Sequelize不支持在亲属的构建阶段创建关联对象。
您的代码应如下所示:
models.Aisle.create({}).then(function(aisle1) {
models.Aisle.create({}).then(function(aisle2) {
models.Product.create({}).then(function(product) {
product.setAisles([aisle1, aisle2]);
});
});
});
您可以创建自己的beforeCreate
hook,可以在保存产品之前通过选项创建过道。
BelongsToMany
关系将另一个表添加到您的数据库productAisles
,需要填充该表以保存关系,因此,如果您首先构建Aisles然后将它们添加到其中,那么实际上您将不会保存任何查询你的产品。