📅  最后修改于: 2023-12-03 15:32:28.943000             🧑  作者: Mango
Knex.js 是一个可靠的Node.js SQL查询构建器,用于构建数据库驱动的应用程序。它具有简单易用的API,支持多种数据库,包括PostgreSQL,MySQL和SQLite3等。此外,Knex.js还提供了迁移功能,可简化数据库结构的管理和维护。
在本文中,我们将重点介绍如何使用Knex.js创建迁移,并在代码示例中详细说明每个步骤。
在开始使用Knex.js进行迁移创建之前,需要安装相关的依赖项。请运行以下命令:
npm install knex --save
npm install pg --save
上述命令将Knex.js和PostgreSQL数据库驱动安装到本地项目中。
接下来,请在项目根目录中创建一个名为'knexfile.js'的文件,用于设置与数据库的连接。请使用以下模板:
module.exports = {
development: {
client: 'postgresql',
connection: {
database: 'your_database',
user: 'your_username',
password: 'your_password'
},
migrations: {
directory: __dirname + '/db/migrations'
},
seeds: {
directory: __dirname + '/db/seeds'
}
},
production: {
client: 'postgresql',
connection: process.env.DATABASE_URL + '?ssl=true',
migrations: {
directory: __dirname + '/db/migrations'
},
seeds: {
directory: __dirname + '/db/seeds'
}
}
};
上述配置文件定义了两个环境:开发环境(development)和生产环境(production)。在此示例中,我们使用PostgreSQL数据库作为开发和生产环境的默认客户端,但您也可以使用其他支持的客户端,例如MySQL和SQLite3。
请注意,上述配置文件还指定了数据库迁移和种子的目录。默认情况下,Knex.js使用名为'migrations'和'seeds'的目录,但您也可以更改目录位置。
为了创建新的迁移文件,请使用以下命令:
npx knex migrate:make migration_name
请将'migration_name'替换为您要创建的迁移名称。例如,如果要创建添加新表的迁移,则可以使用以下命令:
npx knex migrate:make create_users_table
此命令将在'migrations'目录中创建一个新的迁移文件。打开此文件并将其更新为以下模板:
exports.up = function(knex) {
return knex.schema.createTable('users', function(table) {
table.increments('id').primary();
table.string('name');
table.string('email').unique();
table.timestamps();
});
};
exports.down = function(knex) {
return knex.schema.dropTable('users');
};
上述示例创建了一个名为'users'的表,该表包含'id','name','email'和'timestamps'四个列。请注意,'id'列设置为自动增量主键,'email'列设置为唯一索引。
在创建表之后,我们还需要提供撤消表('down')的方法。这是为了防止在不小心删除表时出现不可恢复的问题。在上例中,'down'方法将删除'users'表。
在完成迁移文件的创建后,我们可以使用以下命令将其应用于数据库:
npx knex migrate:latest
此命令将执行所有未应用的迁移,并将它们添加到数据库中。如果您要回滚最近的迁移,则可以使用以下命令:
npx knex migrate:rollback
您还可以使用以下命令来获得有关迁移状态的详细信息:
npx knex migrate:status
此命令将显示有关每个迁移文件的信息,包括其名称,应用时间和撤消时间。此外,它还将显示当前数据库状态(哪些迁移已应用,哪些未应用)。
使用Knex.js进行迁移创建可以帮助程序员更轻松地管理和维护数据库结构。本文介绍了如何准备(安装依赖项,设置数据库连接),创建迁移文件(使用命令生成,更新迁移文件内容)以及应用迁移文件(执行,回滚,检查状态)。我们希望本文能够帮助您更好地使用Knex.js进行数据库操作。
本文外链