如何将关联的顺序名称保持在小写



无法在lower_case中获取我的foreignKey,我的所有关联都是PascalCase。

所以我有一个简单的表"user",它有role_id(foreignKey(我有桌子上的"角色"。因此,当创建一个用户时,它工作得很好。但当我查询它时,会搜索foreignKey名称,比如RoleId,而不是role_id。

module.exports = (sequelize, DataTypes) => {
const Role = sequelize.define('Role', {
name: DataTypes.STRING
}, {
tableName: "role"
});
Role.associate = function (models) {
// associations can be defined here
Role.hasMany(models.User)
};
return Role;
}

module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
id: {
type: DataTypes.UUID,
primaryKey: true,
defaultValue: DataTypes.UUIDV4,
allowNull: false,
autoIncrement: false,
},
email: DataTypes.STRING,
password: DataTypes.STRING,
role_id: DataTypes.INTEGER,
name: DataTypes.STRING,
MerchantId: DataTypes.STRING
}, {
tableName: 'user'
});
User.associate = function (models) {
User.belongsTo(models.Role)
User.belongsTo(models.Merchant)
};
return User;
};

有什么解决方案可以保持所有名称的lower_case_underscore?

我遇到了类似的问题,必须在关系的两侧设置foreignKey,否则它将自动使用RoleId

Role.hasMany(models.User, {foreignKey: 'role_id'});
...
User.belongsTo(models.Role, {foreignKey: 'role_id'});

另一个选项是在全局配置中设置underscored: true。您可以将所有属性名称保留为camel大小写,但表名称和字段名称将使用snake大小写。

config = {
"development": {
...
"define": {
"underscored": true
}
}
}
const sequelize = new Sequelize(config.database, config.username, config.password, config);

尝试

User.belongsTo(models.Role, { foreignKey: 'role_id' ))

最新更新