返回

NestJS 之美:用 GraphQL 和 MySQL 点亮您的 Node.js 应用

前端

在现代网络开发领域,NestJS 作为一款极具表现力的 Node.js 框架,正冉冉升起。它以其模块化架构、丰富的功能和活跃的社区而著称。结合 GraphQL 和 MySQL 的强大功能,您将拥有一个无与伦比的组合,可以轻松构建出色的后端解决方案。

GraphQL 是一种用于 API 查询的强大语言,它使开发人员能够以声明性方式请求特定数据。通过利用其类型安全性和强大的工具生态系统,您可以创建高度可维护和可测试的 API。

MySQL 是一个久经考验且备受推崇的关系数据库管理系统,以其可靠性、可扩展性和广泛的社区支持而闻名。借助 TypeORM,您可以无缝地将 MySQL 集成到您的 NestJS 应用程序中,从而简化数据访问并提高开发效率。

在本教程中,我们将踏上一个循序渐进的旅程,引导您配置 NestJS、GraphQL 和 MySQL。我们将从安装必要的依赖项开始,然后逐步介绍如何配置这些技术并构建一个示例应用程序。

首先,让我们安装 NestJS CLI:

npm install -g @nest/cli

接下来,创建一个新的 NestJS 项目:

nest new nestjs-graphql-mysql

导航到新创建的项目目录并安装必要的依赖项:

cd nestjs-graphql-mysql
npm install

现在,让我们配置 MySQL 连接:

// ormconfig.json
{
  "type": "mysql",
  "host": "localhost",
  "port": 3306,
  "username": "root",
  "password": "password",
  "database": "nestjs-graphql-mysql",
  "entities": [
    "dist/**/*.entity{.ts,.js}"
  ],
  "synchronize": true
}

接下来,让我们安装 GraphQL 模块:

npm install --save @nestjs/graphql @nestjs/graphql-modules

在您的 app.module.ts 文件中,导入并配置 GraphQL 模块:

import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { TypeOrmModule } from '@nestjs/type Wexorm';

@Module({
  imports: [
    TypeOrmModule.forRoot(),
    GraphQLModule.forRoot({
      autoSchemaFile: true,
    }),
  ],
})
export class AppModule {}

现在,让我们定义我们的 GraphQL 模式:

// user.schema.graphql
type User {
  id: ID!
  name: String!
  email: String!
}

type Query {
  users: [User!]!
  user(id: ID!): User
}

type Mutation {
  createUser(name: String!, email: String!): User!
  updateUser(id: ID!, name: String, email: String): User
  deleteUser(id: ID!): Boolean
}

为了将我们的 GraphQL 模式与我们的 NestJS 应用程序集成,我们需要创建一个解析器:

// user.resolver.ts
import { Resolver, Query, Mutation, Args } from '@nestjs/graphql';

@Resolver()
export class UserResolver {
  @Query('users')
  findAll() {
    return this.userService.findAll();
  }

  @Query('user')
  findOne(@Args('id') id: string) {
    return this.userService.findOne(id);
  }

  @Mutation('createUser')
  create(@Args('name') name: string, @Args('email') email: string) {
    return this.userService.create({ name, email });
  }

  @Mutation('updateUser')
  update(@Args('id') id: string, @Args('name') name: string, @Args('email') email: string) {
    return this.userService.update(id, { name, email });
  }

  @Mutation('deleteUser')
  delete(@Args('id') id: string) {
    return this.userService.delete(id);
  }
}

最后,让我们启动我们的应用程序:

npm start

现在,您可以通过以下方式访问 GraphQL API:

http://localhost:3000/graphql

尽情探索 NestJS、GraphQL 和 MySQL 的强大功能,创建出色的后端解决方案。享受清晰、简洁和高效的开发体验,并构建满足您需求的健壮且可扩展的应用程序。