我已经阅读并测试了通过sequelize-cli进行的Sequelize迁移,并使用unzug库以编程方式进行了迁移。 我想做一些复杂的任务,稍后再解释。在此之前,我想确保我对sequelize文档的理解正确与否。
Creating-first-model--and-migration model:generate命令生成模型文件和迁移文件。
如果使用sequelize-cli,则需要通过执行命令db:migrate创建表。
在我的角电子应用中,第一个新的Sequelize如下:
this.sequelize = new Sequelize(this.dbName, null, null, {
dialect: 'sqlite',
storage: storage,
operatorsAliases: false
});
//Define table model
this.userModel = this.sequelize.define('users', {
name: { type: Sequelize.STRING, allowNull: false },
});
// Use sync to create table
this.sequelize.sync();
上面的代码没有问题。 这是我的第一个问题:但是,如果我要使用模型文件夹(user.js等)中的模型文件,如何从我的打字稿代码访问?然后调用this.sequelize.sync()?
我知道我可以使用umzug库并将其用于迁移文件夹下所有文件的迁移,从而为user.js等创建表。
我问的原因是
我想使用版本来控制数据库表的创建和迁移。
在android中,数据库具有版本的概念,如果尚未创建数据库,则它将创建具有最新架构的所有表,并且不会进行每次迁移。
根据版本,我可以控制从哪个版本开始运行迁移文件。
如果由于任何原因迁移失败(实际上不应发生),那么我可以强制其删除表并使用最新模式再次创建表。在这种情况下,即使数据消失了,应用程序也不会失败。
使用umzug
umzug.up(['20141101203500-task','20141101203501-task-2']);
但是我无法检查哪些任务已经执行。 umzug.pending()无法检查我提供的列表,它返回带有所有剩余未决迁移的migrations数组,而不是从提供的任务数组返回。如果umzug.up([task-list])包括已执行的迁移,它将抛出错误,其余迁移文件将不会运行。 还有其他解决方法吗?
umzug.up({ migrations: ['20141101203500-task', '20141101203501-task-2'] });
因此,通过提供数组列表,不能在数组中按顺序执行这些任务吗? umzug.up()是否并行执行任务?