乐闻世界logo
搜索文章和话题

How to deal with SQLite migrations in React-Native using TypeORM?

2 个月前提问
1 个月前修改
浏览次数32

1个答案

1

在React Native项目中使用TypeORM处理SQLite的迁移包含几个关键步骤。我将详细解释每个步骤,并提供相应的代码示例或操作方式。

步骤 1: 安装和配置TypeORM

首先,确保你的React Native项目中已经安装了typeormreact-native-sqlite-storage。TypeORM 依赖于这个库来处理SQLite数据库。

bash
npm install typeorm react-native-sqlite-storage

接下来,你需要在项目中配置TypeORM。这通常在一个专门的数据库配置文件中完成。例如,你可以创建一个database.ts文件,用于初始化数据库连接。

typescript
import {createConnection} from 'typeorm'; import {User} from './entities/User'; export const databaseInitializer = async () => { await createConnection({ type: 'react-native', database: 'test.db', location: 'default', logging: ['error', 'query', 'schema'], synchronize: false, entities: [ User, ], migrations: ['src/migration/**/*.ts'], cli: { migrationsDir: 'src/migration', }, }); };

步骤 2: 创建迁移

在TypeORM中,迁移是用来管理数据库结构变化的脚本。你可以手动创建迁移文件或者使用TypeORM CLI生成它们。

为了生成一个迁移,你可以运行以下命令:

bash
typeorm migration:create -n UserMigration

这将在指定的迁移文件夹中创建一个新的迁移文件。你需要编辑这个文件,定义需要进行的数据库结构变更。

typescript
import {MigrationInterface, QueryRunner} from "typeorm"; export class UserMigration implements MigrationInterface { public async up(queryRunner: QueryRunner): Promise<void> { await queryRunner.query(`CREATE TABLE "user" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar NOT NULL)`); } public async down(queryRunner: QueryRunner): Promise<void> { await queryRunner.query(`DROP TABLE "user"`); } }

步骤 3: 执行迁移

一旦你的迁移文件准备好了,你可以在应用启动时调用迁移来更新数据库结构。

typescript
import {databaseInitializer} from './database'; const startApp = async () => { await databaseInitializer(); await connection.runMigrations(); // 这里是其他初始化代码 }; startApp();

步骤 4: 迁移回滚(可选)

如果需要的话,TypeORM也支持迁移回滚,这可以通过调用undoLastMigration方法实现。

typescript
await connection.undoLastMigration();

总结

使用TypeORM处理SQLite数据库迁移,需要先设置好TypeORM和相关依赖,编写迁移脚本,然后在适当的时机执行这些迁移。这种方式可以帮助你有效地管理React Native应用中的数据库结构变化。

2024年7月31日 00:43 回复

你的答案