安装knexfilenpm install -g knex然后在项目的根目录knex init将会产生knexfile.js,内容类似如下// Update with your config settings.
module.exports = {
development: {
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'root',
password: '',
database: '',
charset: 'utf8'
}
},
staging: {
...
},
production: {
...
}
};如果想要根据具体环境来执行具体配置,可以使用如下命令来指定环境knex migrate:latest --env production更多的使用可以参考Knex docs创建Migrationknex migrate:make create_person将会创建migrations目录并且将migration的文件放入文件夹中默认的内容如下:exports.up = function(knex, Promise){
}
exports.down = function(knex, Promise){
}接下来我们在这里面实现具体的表信息exports.up = function(knex, Promise){
return Promise.all([
knex.schema.createTable('person', function(table){
table.increments('id').primary();
table.integer('parentId').unsigned().references('id').inTable('person');
table.string('firstName');
table.string('fullName');
table.integer('age');
table.json('address');
})
]);
}
exports.down = function(knex, Promise){
return Promise.all([
knex.schema.dropTable('person')
]);
}当应用migration的时候up被调用,当执行回滚的时候down被调用在这些功能中,你可以使用Knex Schema functions执行如下命令来使用新的migrationknex migrate:latest更新数据库表knex migrate:make update_person内容如下exports.up = function(knex, Promise) {
return Promise.all([
knex.schema.table('person', function(table){
table.string('twitter');
})
])
}
exports.down = function(knex, Promise) {
return Promise.all([
knex.schema.table('person', function(table){
table.dropColumn('twitter');
})
]);
}回滚操作回滚操作执行下面的命令knex migrate:rollbackknex对于创建跟修改表变得很容易。