📜  将nestjs 连接到mysql - Javascript (1)

📅  最后修改于: 2023-12-03 15:39:14.086000             🧑  作者: Mango

将NestJS连接到MySQL

NestJS 是一个流行的 Node.js 框架,它提供了灵活的体系结构、强大的路由功能和良好的抽象层来帮助你构建复杂的 Web 应用程序。在本文中,我们将向您展示如何将 NestJS 连接到 MySQL 数据库。

步骤
步骤 1 - 安装依赖

在开始之前,您需要在系统上安装 Node.js 和 NestJS。您还需要安装 mysql2(我们将在后续步骤中使用它来连接到 MySQL 数据库)。

npm install --save mysql2
步骤 2 - 配置环境变量

在项目根目录下创建一个名为 .env 的文件,并将以下内容添加到其中:

DB_HOST=localhost
DB_USERNAME=root
DB_PASSWORD=password
DB_DATABASE=mydatabase

替换上面的值以匹配您的 MySQL 服务器配置。

步骤 3 - 配置数据库连接

在 NestJS 中,您可以使用 TypeORM 或 Sequelize 等 ORM 库来管理数据库。在本教程中,我们将使用 TypeORM。创建一个名为 ormconfig.json 的文件,并将以下内容添加到其中:

{
  "type": "mysql",
  "host": "${DB_HOST}",
  "port": 3306,
  "username": "${DB_USERNAME}",
  "password": "${DB_PASSWORD}",
  "database": "${DB_DATABASE}",
  "entities": ["dist/**/*.entity{.ts,.js}"],
  "synchronize": true
}

该配置文件将 NestJS 连接到 MySQL 数据库。请注意,我们使用了 .env 文件中定义的环境变量来引用不同的配置项。

步骤 4 - 创建数据库实体

在文件夹 src 中创建一个名为 users 的文件夹,并在其中创建一个名为 user.entity.ts 的文件。在该文件中添加以下代码:

import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';

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

  @Column()
  name: string;

  @Column()
  email: string;

  @Column()
  password: string;
}

这个实体表示数据库中的 users 表。在本例中,我们只定义了 idnameemailpassword 四个列。您可以根据需要添加或移除列。

步骤 5 - 创建数据库服务

在文件夹 src 中创建一个名为 users 的文件夹,并在其中创建一个名为 users.service.ts 的文件。在该文件中添加以下代码:

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { User } from './user.entity';

@Injectable()
export class UsersService {
  constructor(
    @InjectRepository(User)
    private usersRepository: Repository<User>,
  ) {}

  async findAll(): Promise<User[]> {
    return await this.usersRepository.find();
  }
}

该服务将查询 users 表并返回所有条目。在 URI 上访问此服务将返回 JSON 形式的结果。

步骤 6 - 创建控制器

在文件夹 src 中创建一个名为 users 的文件夹,并在其中创建一个名为 users.controller.ts 的文件。在该文件中添加以下代码:

import { Controller, Get } from '@nestjs/common';
import { UsersService } from './users.service';

@Controller('users')
export class UsersController {
  constructor(private readonly usersService: UsersService) {}

  @Get()
  findAll(): Promise<any[]> {
    return this.usersService.findAll();
  }
}

该控制器将处理 /users URI,使用上述服务返回所有 users 条目。

步骤 7 - 启动服务器

最后,您可以使用以下命令启动 NestJS 服务器:

npm run start
结论

在本教程中,我们向您演示了如何连接 NestJS 到 MySQL 数据库。您已经学会了如何安装依赖项、配置环境变量、配置数据库连接、创建数据库实体、创建数据库服务和创建控制器。现在,您可以将这些步骤应用到自己的 NestJS 项目中,以访问和操作 MySQL 数据库。