gpt4 book ai didi

node.js - 在 sequelize 中使用模型集合作为数据类型

转载 作者:行者123 更新时间:2023-12-03 22:42:41 24 4
gpt4 key购买 nike

背景 :

这是一个产品数据库原型(prototype),每个产品可以有多个相关产品,每个关系都有一个类型,例如“附件”、“备件”、“相关”、“类似”等。

技术

我们在 Node 上使用 sequelize js 来定义模型。

模型片段:

sequelize.define('Product', {
id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true },
name: { type: DataTypes.STRING, allowNull: false, comment: 'product name'}
...
});

sequelize.define('ProductRelationType', {
id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true },
name: { type: DataTypes.STRING, allowNull: false, comment: 'relationship type description' }
});

sequelize.sync({force: false}).then( function() {
...
});

问题

是否可以将模型本身用作 Sequelize 中的数据类型,以在另一个表中建立集合,例如:
sequelize.define('ProductRelation', {
id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true },
relatedProduct: { type: Product } //reference to product model
});

然后是:
Product.hasMany(ProductRelation, { as: 'relatedProducts' });
ProductRelation.hasOne(ProductRelationType, { as: 'RelationType' } );

或者,排除 ProductRelation 表定义,并使用:
db.Product.hasMany(db.Product, { through: 'RelatedProduct' } );
db.RelatedProduct.hasMany(db.Product, { through: 'RelatedProduct' } );

注意:这些是概念示例,它们不起作用。

感谢任何建议或替代建模方法。

谢谢

最佳答案

看来,您想要的只是从 Product 建立一个 n:m 关系。至Product .

到达那里的唯一方法是建立一个链接(或“通过”)表。您可以手动操作,也可以让 Sequelize使用 belongsToMany 自动执行:

var RelatedProducts = sequelize.define('RelatedProducts', {
// other columns here
});

Product.belongsToMany(Product, { through: RelatedProducts, foreignKey: 'relatedProductId' });
Product.belongsToMany(Product, { through: RelatedProducts });

关于node.js - 在 sequelize 中使用模型集合作为数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29083906/

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