【发布时间】:2026-01-18 15:45:01
【问题描述】:
我目前正在使用 Express 和 Sequelize + MySQL,我想知道解决这个问题的最佳方法是什么。如果这是一个基本问题,我深表歉意,因为我对 Sequelize 甚至 SQL 数据库都很陌生。
我有一个模特User 像这样;
export default db.define('User', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
email: {
type: Sequelize.STRING,
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
updatedAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
});
那我还有另一个模特Shoe 像这样;
export default db.define('Shoe', {
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true,
autoIncrement: true,
},
name: {
type: Sequelize.STRING,
allowNull: false,
},
size: {
type: Sequelize.INTEGER,
allowNull: true,
},
quality: {
type: Sequelize.ENUM('Brand New', 'Used', 'Collector Item'),
allowNull: false,
},
createdAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
updatedAt: {
type: Sequelize.DATE,
defaultValue: Sequelize.NOW,
},
});
然后我定义这两者之间的关联。
User.hasMany(Shoe);
Shoe.belongsTo(User);
但是,这样做的问题是它“创造”了鞋子,这会导致重复。我基本上想要一个名为“Shoes”的表,其中包含鞋子,然后用户只需根据它拥有的鞋子引用 id。
不确定执行此操作的最佳方法是什么,尤其是在用户拥有多双鞋的情况下。在伪中,我想我想要一个像 shoes: [1, 2, 3, 4] 这样的鞋 id 数组,当被查询时,它会以某种方式在鞋表中查找并插入到用户响应中。
显然我可以在原始 SQL 中执行类似的操作,但鉴于 Sequelize 的强大功能,我认为必须有更好的方法来解决此问题。
希望有人可以就此提供一些建议和帮助!
【问题讨论】:
标签: mysql node.js express sequelize.js