在Sequelize迁移脚本中添加数据?
如何将数据添加到Sequelize迁移脚本中的表中? 这是我得到的:
module.exports = { up: function(migration, DataTypes, done) { migration.createTable( 'person', { name: DataTypes.STRING, age: DataTypes.INTEGER }, { charset: 'latin1' // default: null } ); // I want to insert person and age. migration.insert(???); done() }, down: function(migration, DataTypes, done) { migration.dropTable('queue'); done() }
}
我想到了。 Sequelize可以从migration.migrator.sequelize中获得 。 有可能做这样的事情:
up: function (migration, DataTypes, done) { migration.createTable( 'Person', { name: DataTypes.STRING, age: DataTypes.INTEGER, } ).success(function () { migration.migrator.sequelize.query("insert into person (name, age) values ('Donald Duck', 60)"); done(); }); }, down: function (migration, DataTypes, done) { migration.dropTable( 'Person' ).then(function() { done(); }) }
在最新版本的续集中,这已经改变,现在应该是
migration.createTable( 'Person', { name: DataTypes.STRING, age: DataTypes.INTEGER, } ).then(function () { migration.sequelize.query("insert into person (name, age) values ('Donald Duck', 60)"); done(); });
其实这不是一个好主意,只是运行一个查询。 queryInterface现在具有create()和bulkCreate()。
'use strict'; module.exports = { up: function(queryInterface, Sequelize) { return queryInterface.bulkInsert('roles', [{ label: 'user', createdAt: new Date(), updatedAt: new Date() }, { label: 'admin', createdAt: new Date(), updatedAt: new Date() }]); }, down: function(queryInterface, Sequelize) { return queryInterface.bulkDelete('roles', null, {}); } };
这就像sequelize-cli预期的那样回报了一个承诺。
来源(改编): https : //github.com/sequelize/sequelize/issues/3210