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

问题描述

我正在尝试关联用户和角色,以便为用户分配角色。当我尝试添加用户时,我不断收到错误消息,如果没有关联它就可以工作,但我想关联它们。

这是我的用户模型

mutate

这是我的榜样

'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,password: {
            type: DataTypes.STRING,first_name: {
            type: DataTypes.STRING,last_name: {
            type: DataTypes.STRING,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,title: DataTypes.STRING,description: DataTypes.STRING
    },tableName: 'role',initialAutoIncrement: 2000
    });
    Role.associate = (models) => {
        Role.hasMany(models.User,{ as: 'users',foreignKey: 'user_id' })};

    return Role;
}

解决方法

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

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

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