gpt4 book ai didi

node.js - 如何正确使用迁移

转载 作者:行者123 更新时间:2023-12-03 22:26:57 24 4
gpt4 key购买 nike

我的问题有点抽象,但我希望不要太多。

我正在构建一个使用 Sequelize 的项目,因为它是 ORM。它已经在生产中,这意味着我的数据库中有无法删除的数据。由于我们还在开发,我有时需要更改数据库(更改列,添加列,删除列)。

在项目中我使用 sequelize.sync() 。强制更改数据库的唯一选项是使用 sequelize.sync({force: true}) ,但此命令会从数据库中删除所有数据。

据我了解,我需要使用迁移。遗憾的是,我已经阅读了文档并查看了 Stack Overflow,但我仍然找不到有关如何进行迁移和保留数据的正确指南。

假设我有一个模型 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,我该怎么做?

最佳答案

User 表中添加列并使用 alter

sequelize.sync({
force: false,
alter: true
})
alter true 只会更新新列或删除的列而不删除数据。

关于node.js - 如何正确使用迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55605931/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com