Я использую sequelize для моделирования схемы mySql-базы данных в моем приложении-узле. Экстракт моей модели выглядит так: У меня есть стол компании и стол отдела. Компания может иметь несколько отделов, а отдел принадлежит только одной компании. Я смоделировал это следующим образом:Как выбрать название столбца Foreign Key, используя Sequelize и mySql?
Компания стол:
module.exports = function(sequelize, DataTypes){
return Company = sequelize.define('Company', {
companyId: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
autoIncrement: true,
unique: true
},
name: {
type: DataTypes.STRING,
allowNull: false
}
})}
Отдел стол:
var Company = require('./company');
module.exports = function(sequelize,DataTypes) {
return Department = sequelize.define('Department', {
departmentId: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
autoIncrement: true,
unique: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
companyId: {
type: DataTypes.INTEGER,
references: 'Companies',
referencesKey: 'companyId',
onDelete: 'cascade'
}
});}
Чтобы действительно сохранить эту схему в базе данных я использую следующий код:
var db = require('../models/index');
db["Company"].hasMany(db["Department"], {as: 'departments'});
db["Department"].belongsTo(db["Company"], {foreignKey: 'companyId', foreignKeyConstraint: true});
models.sequelize.sync().complete(function(err){
//irrelevant for the problem
});
Проблема в том, что этот код создает 2 внешних ключа в таблице отдела. Один на поле «companyId» (как и ожидалось), но также и на поле «CompanyCompanyId», поле, которое автоматически генерируется.
Как я могу убедиться, что только внешний ключ, который я определил ('companyId'), используется и создается?
Да, то же значение foreignKey по обе стороны от отношения решает проблему, спасибо! – Xdg
Если у вас есть дополнительные опции для 'foreignKey' (например,' allowNull: false'), вы можете указать его имя, используя 'name':' foreignKey: {name: 'companyId', allowNull: false} '. –
Привет, Саймон, я пытаюсь создать внешний ключ, вы можете мне помочь? – Kannan