使用knex创建postgresql表knex迁移

knex是nodejs中访问数据库的一个模块,支持多种数据库,并且使用knex可以使用js代码维护数据库表,官网:

http://knexjs.org/

本文讲创建数据表的部分,关于配置和迁移配置请参见官方文档:

http://knexjs.org/#Installation-migrations

 

一、创建迁移文件

knex migrate:make users

其中 users = 表名,执行该命令后将会在配置的迁移文件目录生成文件:20201203093439_users.js

打开文件,内容如下:

exports.up = function(knex) {
  
};

exports.down = function(knex) {
  
};

其中up方法=执行的操作、down方法=回滚操作

即:up创建表 down删除表

 

下面开始编写创建数据库的js代码

 

二、创建数据表

在up方法里:

knex.schema.createTable('users', function (table) {
  table.increments().primary();
  table.string('name');
  table.timestamps(true,true);
})

 

* tables.timestamps 方法会自动生成 created_at和updated_at字段,并且默认值为当前时间;increments 为自增列

 

knex支持的postgresql数据类型:

– integer
– bigInteger
– text
– stringfloatdecimal
– boolean
– date
– datetime
– time
– timestamp
– binary
– enum / enu
– json
– jsonb
– uuid

* 这些数据类型都可以直接使用对应的方法创建字段,如:table.json(name)、table.string(name),其中name为字段名

 

如遇到不支持的数据类型,如:ip地址、数组等,可使用以下方法处理

knex提供了specificType 方法来创建原生数据库字段类型

specificType — table.specificType(name, type)

如:

table.specificType('client_ip', 'cidr');
table.specificType('roles', 'varchar(50)[]');

 

其它常用设置方法:

 

【默认值】

 defaultTo — column.defaultTo(value)

 

【非空字段】

notNullable — column.notNullable()

 

【字段描述】

comment — column.comment(value)

* 此方法会在数据库生成字段描述信息

 

【索引】

index — table.index(columns, [indexName], [indexType])

 

三、回滚操作

在down方法里:

knex.schema.dropTable('users');

 

这样就完成了创建表和删除(回滚)表操作

 

执行下列命令即可同步/回滚到数据库:

knex migrate:up
knex migrate:down

 

* 默认环境变量为:develpoment,如果要指定环境变量可使用参数 --env ,如下:

 

knex --env test migrate:up
knex --env test migrate:down

 

 

 

posted @ 2020-12-03 11:50  yzeng  阅读(875)  评论(0编辑  收藏  举报