alo*_*ons 3 javascript database database-migration node.js sequelize.js
在 Sequelize.js 中,我创建了一个示例迁移文件:
module.exports = {
up: function(migration, DataTypes, done) {
// add altering commands here, calling 'done' when finished
migration.createTable('Users', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
createdAt: {
type: DataTypes.DATE
},
updatedAt: {
type: DataTypes.DATE
},
firstname: DataTypes.STRING,
lastname: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING,
});
done()
},
down: function(migration, DataTypes, done) {
// add reverting commands here, calling 'done' when finished
done()
}
}
Run Code Online (Sandbox Code Playgroud)
有人能解释一下 up 和 down 功能的用例和可能的实现吗?
谢谢!
在迁移之前和迁移之后,您必须看到数据库是否有 2 个不同的“状态”。
在开始任何迁移之前,您没有任何Users表,所以假设您的数据库处于“状态 1”。
当您运行向上迁移 ( sequelize db:migrate) 时,您将数据库传递到“状态 2”(现在您Users的数据库中有该表)。
如果出现任何问题,或者您改变了对此次迁移的看法,您可以通过运行 down 功能 ( sequelize db:migrate:undo) 执行与 up 功能相反的操作,再次返回“状态 1” 。
在这种情况下,它很简单,如果您要创建一个Users, 来反转您只需删除它并再次返回“状态 1”。
module.exports = {
up: function(migration, DataTypes, done) {
// add altering commands here, calling 'done' when finished
migration.createTable( 'Users', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
createdAt: {
type: DataTypes.DATE
},
updatedAt: {
type: DataTypes.DATE
},
firstname: DataTypes.STRING,
lastname: DataTypes.STRING,
email: DataTypes.STRING,
password: DataTypes.STRING,
})
.nodeify( done );
},
down: function(migration, DataTypes, done) {
// add reverting commands here, calling 'done' when finished
migration.dropTable('Users')
.nodeify( done );
}
};
Run Code Online (Sandbox Code Playgroud)
例如,如果您要删除Users表而不是创建它,则只需交换上下代码。
| 归档时间: |
|
| 查看次数: |
5439 次 |
| 最近记录: |