Sequelize V6配置表关联时额外生成UserUserId字段问题求助
问题根因
你仅在Post.belongsTo(User)的配置中声明了外键为userId,但User.hasMany(Post)未同步配置对应的关联外键。Sequelize 检测到两侧关联参数不匹配时,会自动按照模型名+主键字段名的规则生成默认外键列:你的User模型主键为userId,因此自动生成了多余的UserUserId列。
修复方案
修改resetTables.js中的关联配置,给User.hasMany也同步指定和belongsTo完全对齐的外键参数即可:
User.hasMany(Post, { foreignKey: { name: "userId", type: DataTypes.UUID, allowNull: false }, onDelete: "CASCADE" }); Post.belongsTo(User, { foreignKey: { name: "userId", type: DataTypes.UUID, allowNull: false, validate: { notNull: true } }, onDelete: "CASCADE" });
修改后重新执行建表逻辑,多余的UserUserId列就不会再生成了。
内容的提问来源于stack exchange,提问作者Gareth T.
相关产品推荐
相关产品推荐

