Mysql 续写多对多关系:无法读取属性';拆分';未定义的
我正在尝试使用Sequelize+nodeJs和现有MySQL数据库创建多对多关系: 以下是我的表格: -“usr”表:usr_id(主键) -中间“usr\U角色”:usr\U id、角色\U id -“角色”表:角色\u id 这是我的模型 “用户”模型:Mysql 续写多对多关系:无法读取属性';拆分';未定义的,mysql,node.js,sequelize-cli,Mysql,Node.js,Sequelize Cli,我正在尝试使用Sequelize+nodeJs和现有MySQL数据库创建多对多关系: 以下是我的表格: -“usr”表:usr_id(主键) -中间“usr\U角色”:usr\U id、角色\U id -“角色”表:角色\u id 这是我的模型 “用户”模型: “严格使用”; var bcrypt=require('bcryptjs'); module.exports=函数(sequelize,数据类型){ var User=sequelize.define('User'{ 乌斯里德:{ 类型
“严格使用”;
var bcrypt=require('bcryptjs');
module.exports=函数(sequelize,数据类型){
var User=sequelize.define('User'{
乌斯里德:{
类型:DataTypes.INTEGER,
primaryKey:没错,
自动递增:真,
allowNull:错,
字段:'usr\u id'
},
姓名:{
类型:DataTypes.STRING,
allowNull:错,
字段:'usr_name'
},
}, {
时间戳:false,
表名:true,
tableName:'usr',
名称:'User',
加下划线:'正确',
分类方法:{
助理:职能(模型){
belongsToMany(models.Role,{通过:'UserRole',foreignKey:'usr_id',as:'UserRoles'});
}
}
}
);
返回用户;
};
您需要在目录下的配置中指定实际中间表的名称,或者定义模型UserRole
。此外,除非中间表中有字段,否则可能还需要指定时间戳:false
。例如:
Role.belongsToMany(models.User, {
through: 'usr_role',
foreignKey:'role_id',
timestamps: false
});
这将导致sequelize在其生成的查询中使用该表,而不需要定义模型,并将阻止它从用户表或中间表请求时间戳字段。感谢您的回复。我已尝试使用您的解决方案,但错误“TypeError:无法读取未定义的属性'split'”仍然存在。我使用的是sequelize版本3.23.6。谢谢