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' })};
删除所有其他关联。我建议您还原所有迁移,进行我所说的这些更改,然后 运行 再次迁移
我正在尝试关联用户和角色,以便我可以为用户分配角色。当我尝试添加用户时,我一直收到错误消息,没有关联它会起作用,但我想关联它们。
这是我的用户模型
'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' })};
删除所有其他关联。我建议您还原所有迁移,进行我所说的这些更改,然后 运行 再次迁移