返回

使用 Next.js + Typerom 实践数据库操作(三)

前端

大家好,欢迎来到使用 Next.js + Typerom 实践数据库操作系列教程的第三部分。在这一部分中,我们将深入探讨 TypeORM 中一些重要的概念,包括:

Migration(数据迁移)

Migration 允许您管理数据库架构的变化,例如创建、修改或删除表和列。在 TypeORM 中,Migration 是使用简单的 JavaScript/TypeScript 类定义的,这些类了要对数据库进行的更改。

Entity(实体)

Entity 是 TypeORM 中用来表示数据库表和行的类。Entity 定义了表结构,包括列名、数据类型和约束。

Connection(连接)

Connection 是 TypeORM 与数据库之间的连接。默认情况下,TypeORM 最多允许 10 个连接,但您可以在需要时创建更多连接。

Manager/Repo

Manager 和 Repo 是两种不同的 API,用于封装与数据库的交互。Manager 提供了一种低级的方式来直接与数据库交互,而 Repo 提供了更高级别的 API,可以简化常见操作。

示例代码

下面是一个示例代码片段,演示了如何使用 Migration、Entity 和 Manager 在 Next.js 项目中创建数据库表:

// my-entity.entity.ts
import { Entity, Column, PrimaryGeneratedColumn } from "typeorm";

@Entity()
export class MyEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

// migration.ts
import { MigrationInterface, QueryRunner } from "typeorm";

export class CreateMyEntity1664495729214 implements MigrationInterface {
  public async up(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.createTable(new Table({
      name: "my_entity",
      columns: [
        {
          name: "id",
          type: "int",
          isPrimary: true,
          isGenerated: true,
          generationStrategy: "increment",
        },
        {
          name: "name",
          type: "varchar",
          length: "255",
        },
      ],
    }));
  }

  public async down(queryRunner: QueryRunner): Promise<void> {
    await queryRunner.dropTable("my_entity");
  }
}

// index.tsx
import { EntityManager } from "typeorm";
import { MyEntity } from "./my-entity.entity";

const entityManager = getEntityManager(); // 获取 EntityManager 实例

// 创建实体并将其保存到数据库
const myEntity = new MyEntity();
myEntity.name = "John Doe";
await entityManager.save(myEntity);

总结

在本文中,我们讨论了使用 Next.js + Typerom 进行数据库操作的三个重要概念:Migration、Entity 和 Connection。我们还提供了示例代码,展示了如何使用这些概念在项目中创建数据库表。在下一部分教程中,我们将深入探讨 Manager 和 Repo API 的用法,以及如何进行复杂查询和关联。