2016-11-09 182 views
2

Sequelize刪除我的外鍵中的下劃線。下劃線被刪除

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

結果在此:

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

因爲列被命名爲USER_ID,而不是用戶ID。

即使設置了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

你確定你已經嘗試打開'underscore'選項嗎?我在這裏看不到你的代碼,這很重要。 – tadman

+0

@tadman我應該睡覺了,忘了將'underscored'選項添加到用戶模型中。非常感謝! – Joery

+0

發生在我們身上。很高興你得到它! – tadman

回答

2

它看起來並不像你啓用了您模型中underscore選項。如果設置Sequelize尊重您的命名約定首選項並將按預期鏈接事物。

我更喜歡下劃線的名字,長時間的Rails開發者,以及混合大小寫的列名稱,這些名稱的結果看起來很糟糕。