返回
使用 Next.js + Typerom 实践数据库操作(三)
前端
2023-12-22 01:40:28
大家好,欢迎来到使用 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 的用法,以及如何进行复杂查询和关联。