Sequelize 尝试关联用户和角色 (mysql2)

Sequelize trying to associate User and Roles (mysql2)

我正在尝试关联用户和角色,以便我可以为用户分配角色。当我尝试添加用户时,我一直收到错误消息,没有关联它会起作用,但我想关联它们。

这是我的用户模型

'use strict';
module.exports = (sequelize, DataTypes) => {
    const User = sequelize.define("User", {
        user_id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        username: {
            type: DataTypes.STRING,
            allowNull: false
        },
        email: {
            type: DataTypes.STRING,
            allowNull: false
        },
        password: {
            type: DataTypes.STRING,
            allowNull: false
        },
        first_name: {
            type: DataTypes.STRING,
            allowNull: false
        },
        last_name: {
            type: DataTypes.STRING,
            allowNull: false
        },
        img_src: DataTypes.STRING,
        //updated_at: DataTypes.DATE,
        status: { 
            type: DataTypes.INTEGER,
            defaultValue: 1
        },
        //active: DataTypes.BOOLEAN
    },
    {
        timestamps: true,
        underscored: false,
        freezeTableName: true,
        tableName: 'user'
    });
    User.associate = (models) => {
        User.belongsTo(models.Role, { foreignKey: 'role_id'})};
        
    return User;
}

这是我的榜样

module.exports = (sequelize, DataTypes) => {
    const Role = sequelize.define('Role', {
        role_id: {
            type: DataTypes.INTEGER,
            primaryKey: true,
            autoIncrement: true
        },
        title: DataTypes.STRING,
        description: DataTypes.STRING
    },
    {
        timestamps: true,
        underscored: false,
        freezeTableName: true,
        tableName: 'role',
        initialAutoIncrement: 2000
    });
    Role.associate = (models) => {
        Role.hasMany(models.User, { as: 'users', foreignKey: 'user_id' })};

    return Role;
}

当我尝试添加用户时,这是我在终端中遇到的错误

UnhandledPromiseRejectionWarning: SequelizeForeignKeyConstraintError: Cannot add or update a child row: a foreign key constraint fails (`e2e-react-db`.`user`, CONSTRAINT `user_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `role` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE)

我想最好的方法是在用户模型上添加一个名为 role_id 的新列,以及关联:

User.associate = (models) => { User.hasOne(models.Role, { foreignKey: 'role_id' })};

删除所有其他关联。我建议您还原所有迁移,进行我所说的这些更改,然后 运行 再次迁移