Когда вы используете sequelize-cli, столбцы createAt и updatedAt уже созданы для вас, поскольку sequelize использует их для обновления таблицы.Вы можете отключить их.
Файл модели сиквелиза не нуждается в createAt и updatedAt, чтобы определить изменения, которые они вносят с помощью sequelize.
Вам нужно будет вручную добавить внешний ключ в оба файла миграции.и модель.Файл модели является ссылкой для вашего секвелиза для взаимодействия со схемой вашей базы данных.
Он задает параметр для вашего секвелиза для запуска запроса к вашей базе данных.Вы можете сказать, что файл переноса связан с вашей схемой базы данных, а файл модели - с тем, какие данные хранятся в вашей базе данных.
В качестве примера рассмотрим таблицу пользователей и ее basicinfo.
Модель пользователя
module.exports = (sequelize, DataTypes) => {
var Users = sequelize.define('users', {
user_id: {
type: DataTypes.STRING,
primaryKey: true,
},
}, {});
User.associate = function(models) {
Users.hasOne(models.basicinfo, {
foreignKey: 'user_id',
as: 'BasicInfo'
});
};
return Users;
};
Базовая информация Модель
module.exports = (sequelize, DataTypes) => {
var basicinfo = sequelize.define('basicinfo', {
first_name: {
type: DataTypes.STRING,
},
last_name: {
type: DataTypes.STRING,
},
};{});
basicinfo.associate = function (models) {
basicinfo.belongsTo(models.users, {
foreignKey: 'user_id',
onDelete: 'CASCADE'
});
};
return basicinfo;
};
Надеюсь, это немного прояснит вашу путаницу, когда вы будете использовать эту замечательную библиотеку, вы узнаете больше.
Вот мой обновленный ответ с файлами миграции длякаждая модель.
пользовательская миграция
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('users', {
user_id: {
type: Sequelize.STRING,
primaryKey: true,
},
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('users');
}
};
basicinfo-миграция
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.createTable('basicinfo', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER
},
user_id: {
type: Sequelize.STRING,
allowNull: false,
unique: true,
onDelete: 'CASCADE',
references: {
model: 'users',
key: 'user_id',
as: 'user_id'
}
},
profile_img: {
type: Sequelize.STRING
},
first_name: {
type: Sequelize.STRING,
},
last_name: {
type: Sequelize.STRING,
},
});
},
down: (queryInterface, Sequelize) => {
return queryInterface.dropTable('basicinfo');
}
};