gpt4 book ai didi

sequelize.js - Sequelize 插入多对多

转载 作者:行者123 更新时间:2023-12-02 04:48:46 24 4
gpt4 key购买 nike

在一次设置所有引用的同时插入多对多关系的正确方法是什么?我不想先 xreate 对象,然后在另一个步骤中设置引用。

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 的对象并抛出异常

最佳答案

您需要先创建过道。 Sequelize 不支持在 relative 的构建阶段创建关联对象。

您的代码应如下所示:

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,需要填充该表以保存关系,因此实际上如果您首先构建过道,然后将它们添加到您的产品中。

关于sequelize.js - Sequelize 插入多对多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30651738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com