я учу node js
и sequelize
и запутался в сценарии. Прежде всего, взгляните на модель, которую я определил.
class Car extends Sequelize.Model {
static init(sequelize, DataTypes) {
return super.init({
id: {
allowNull: false,
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
},
name:{
type: DataTypes.STRING(20),
defaultValue:''
},
//CASE 1 == can define custom foreign column like this
company_id: {
type: Sequelize.INTEGER,
references: {
model: 'Company',
key: 'id',
},
allowNull: false,
},
},
{
sequelize,
tableName: 'Car'
}
);
}
//CASE 2 == can define association like this
static associate(models) {
this.myAssociation = this.belongsTo(models.Company);
}
}
Когда я следую примеру 1, это добавляет в качестве столбца в таблице car
, а когда я запускаю случай 2, он автоматически добавляет столбец ComapanyId
в таблице. Однако, если я запускаю и случай 1, и случай 2, то создаются два столбца. Один пользовательский и один, созданный ассоциацией. Но я запутался, который является правильным способом добавления ограничения внешнего ключа между двумя таблицами. моя концепция понятна. Спасибо.