Мой вопрос немного абстрактен, но я надеюсь, что это не слишком много.
Я строю проект, использующий Sequelize, поскольку это ORM.Он уже находится в производстве, что означает, что у меня есть данные в моей базе данных, которые НЕ МОГУТ быть удалены.Поскольку мы все еще развиваемся, мне иногда нужно изменить базу данных (изменить столбец, добавить столбец, удалить столбец).
В проекте, который я использую sequelize.sync()
.Единственный вариант принудительного изменения базы данных - с sequelize.sync({force: true})
, но эта команда удаляет все данные из базы данных.
Насколько я понимаю, мне нужно использовать миграции.К сожалению, я прочитал документацию и заглянул в Переполнение стека, и я все еще не мог найти правильное руководство о том, как выполнить миграцию и сохранить ваши данные.
Допустим, у меня есть модель, User
:
module.exports = (sequelize, DataTypes) => {
var Users = sequelize.define('user', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
username: {
type: DataTypes.STRING(20),
unique: {
msg: 'A person with the same username already exists!'
},
allowNull: false
},
password: {
type: DataTypes.STRING(100),
allowNull: false
},
phone: {
type: DataTypes.STRING(50),
allowNull: true,
unique: {
msg: 'A user with the same phone number already exists!'
}
}
});
Users.associate = function (models) {
models.user.User_roles = models.user.belongsTo(models.user_role, {foreignKey: 'role'});
models.user.Site_access = models.user.hasMany(models.site_access, {
as: 'site_access',
onDelete: "CASCADE",
foreignKey: {
allowNull: false
}
});
};
return Users;
};
Скажите, что я хотел добавить столбец birthday TIMESTAMP
без стирания всех существующих данных, как я могу это сделать?