下划线被删除

时间:2016-11-09 21:44:27

标签: mysql node.js sequelize.js

Sequelize删除了我的外键中的下划线。

Role.belongsToMany(User, { foreignKey: 'user_id', through: UserRole });

结果如下:

Unknown column 'UserRole.UserId' in 'field list'

因为该列名为user_id,而不是UserId。

即使设置了underscore: true选项,它也会这样做。

有没有办法解决这个问题,这让我感到疯狂,因为我不知道我做错了还是续集了。

UserRole.js:

module.exports = {
  attributes: {
    roleId: {
      type: Sequelize.INTEGER(11),
      field: 'role_id',
      primaryKey: true
    },
    userId: {
      type: Sequelize.INTEGER(11),
      field: 'user_id',
      primaryKey: true
    }
  },
  associations: function() {
      UserRole.belongsTo(User, { foreignKey: 'user_id' });
      UserRole.hasOne(Role, { foreignKey: 'id' });
  },
  options: {
    tableName: 'user_roles',
    timestamps: false,
    classMethods: {},
    instanceMethods: {},
    hooks: {}
  }
}

Role.js

module.exports = {
  attributes: {
    id: {
      type: Sequelize.INTEGER(11),
      primaryKey: true
    },
    name: {
      type: Sequelize.STRING(50),
    },
    description: {
      type: Sequelize.STRING(50),
    },
  },
  associations: function() {
    Role.belongsToMany(User, { foreignKey: 'user_id', through: UserRole });
  },
  options: {
    tableName: 'roles',
    timestamps: false,
    classMethods: {},
    instanceMethods: {},
    hooks: {}
  }
}

1 个答案:

答案 0 :(得分:3)

您似乎未在模型中启用underscore选项。如果设置Sequelize尊重您的命名约定首选项,并将按预期链接事物。

我更喜欢强调名称,长时间使用Rails开发人员,以及结果似乎已破坏的混合大小写列名。