Nodejs Nestjs GraphQL插件@nestjs/graphql的使用

Nodejs Nestjs GraphQL插件@nestjs/graphql的使用
[@nestjs](/user/nestjs)/graphql 是 NestJS 提供的一个用于构建 GraphQL API 的官方库。它提供了一种类型安全的方式来定义 GraphQL 模式、解析器和数据类型。以下是如何在 NestJS 项目中使用 [@nestjs](/user/nestjs)/graphql 的基本步骤:

安装依赖

首先,你需要安装 [@nestjs](/user/nestjs)/graphql 以及 GraphQL 相关的库。

npm install [@nestjs](/user/nestjs)/graphql graphql apollo-server-express

创建 GraphQL 模型

创建一个模型来表示你的数据。例如,你可以创建一个用户模型。

// src/user/user.model.ts
export class User {
    id: string;
    name: string;
    email: string;
}

创建 GraphQL 解析器

接下来,你需要创建解析器(Resolvers)来处理查询、变更和订阅。

// src/user/user.resolver.ts
import { Resolver, Query } from '[@nestjs](/user/nestjs)/graphql';
import { User } from './user.model';

@Resolver(() => User)
export class UserResolver {
    @Query(() => [User])
    async users(): Promise<User[]> {
        // 这里应该是从数据库获取数据
        return [
            {
                id: '1',
                name: 'John Doe',
                email: 'john.doe@example.com'
            },
            {
                id: '2',
                name: 'Jane Doe',
                email: 'jane.doe@example.com'
            }
        ];
    }
}

配置 GraphQL 模块

在你的模块中配置 GraphQL。

// src/app.module.ts
import { Module } from '[@nestjs](/user/nestjs)/common';
import { GraphQLModule } from '[@nestjs](/user/nestjs)/graphql';
import { UserResolver } from './user/user.resolver';

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

启动应用

确保你的应用启动了 GraphQL 服务。

// src/main.ts
import { NestFactory } from '[@nestjs](/user/nestjs)/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

测试 GraphQL API

你可以使用 GraphQL Playground 或者 Postman 等工具来测试你的 GraphQL API。

例如,你可以在 GraphQL Playground 中运行以下查询:

query {
  users {
    id
    name
    email
  }
}

以上就是使用 [@nestjs](/user/nestjs)/graphql 创建一个简单的 GraphQL API 的过程。你可以根据需要扩展这个基础结构,添加更多的解析器、类型和中间件等。


3 回复

当然,没问题!使用@nestjs/graphql插件可以让你在NestJS项目中轻松实现GraphQL。首先,你需要安装必要的依赖:

npm install @nestjs/graphql graphql-tools graphql

然后,在你的模块文件(例如app.module.ts)中导入GraphQLModule

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

@Module({
  imports: [
    GraphQLModule.forRoot({
      autoSchemaFile: true, // 自动生成schema
    }),
  ],
})
export class AppModule {}

接下来,你可以创建一个服务来定义你的GraphQL查询和变异:

import { Resolver, Query, Mutation, Args } from '@nestjs/graphql';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';

@Resolver(() => Cat)
export class CatsResolver {
  constructor(private readonly catsService: CatsService) {}

  @Query(() => [Cat])
  async findAll(): Promise<Cat[]> {
    return this.catsService.findAll();
  }

  @Mutation(() => Cat)
  async create(@Args('input') input: { name: string }): Promise<Cat> {
    return this.catsService.create(input);
  }
}

最后,别忘了在AppModule中引入你的resolver:

import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { CatsResolver } from './cats.resolver';
import { CatsService } from './cats.service';

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

这样,你就有了一个基本的GraphQL服务器!你可以通过http://localhost:3000/graphql访问GraphQL Playground进行测试。希望这能帮到你!


@nestjs/graphql 是一个用于 NestJS 的库,可以帮助开发者快速地创建GraphQL API。下面我将详细介绍如何使用它来创建一个简单的GraphQL API。

1. 安装依赖

首先你需要安装必要的依赖:

npm install @nestjs/graphql graphql apollo-server-express

这里我们安装了 @nestjs/graphqlgraphql 来处理GraphQL逻辑,以及 apollo-server-express 作为服务器中间件。

2. 配置模块

在你的 NestJS 应用中,你需要配置 GraphQL 模块。这通常是在 AppModule 中完成的:

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

@Module({
  imports: [
    GraphQLModule.forRoot({
      autoSchemaFile: 'schema.gql', // 自动生成的GraphQL schema文件路径
      sortSchema: true, // 排序schema文件中的字段
      playground: true, // 启用图形化界面
    }),
  ],
})
export class AppModule {}

3. 创建GraphQL类型

接下来,我们需要定义一些GraphQL类型。例如,我们可以创建一个用户类型:

import { ObjectType, Field } from '@nestjs/graphql';

@ObjectType()
export class User {
  @Field()
  id: string;

  @Field()
  name: string;

  @Field()
  email: string;
}

4. 创建GraphQL查询和变异

现在我们可以在模块中定义一些查询和变异。例如:

import { Resolver, Query, Mutation, Args } from '@nestjs/graphql';
import { User } from './user.type'; // 假设我们的User类型在这个位置

@Resolver(() => User)
export class UserResolver {
  @Query(() => [User])
  async users() {
    // 这里是获取用户列表的逻辑
    return [];
  }

  @Mutation(() => User)
  async createUser(@Args('input') input: any) {
    // 这里是创建用户的逻辑
    return {
      id: '1',
      name: input.name,
      email: input.email,
    };
  }
}

5. 运行应用

最后,确保你的 NestJS 应用可以运行并访问 GraphQL 端点。你可以通过浏览器或像 GraphiQL 这样的工具进行测试。

小结

以上就是使用 @nestjs/graphql 创建基本 GraphQL API 的步骤。你可以根据自己的需求调整和扩展这些基础部分。希望这对你有所帮助!

[@nestjs](/user/nestjs)/graphql 是用于NestJS框架的GraphQL实现插件。使用步骤如下:

  1. 安装必要的包:

    npm install [@nestjs](/user/nestjs)/graphql graphql-tools apollo-server-express
    
  2. 在模块中引入 GraphQLModule

    import { Module } from '[@nestjs](/user/nestjs)/common';
    import { GraphQLModule } from '[@nestjs](/user/nestjs)/graphql';
    
    [@Module](/user/Module)({
      imports: [
        GraphQLModule.forRoot({
          autoSchemaFile: 'schema.gql',
        }),
      ],
    })
    export class AppModule {}
    
  3. 创建Resolver处理GraphQL请求:

    import { Resolver, Query, Args } from '[@nestjs](/user/nestjs)/graphql';
    import { Cat } from './cat.type';
    
    [@Resolver](/user/Resolver)(() => Cat)
    export class CatResolver {
      @Query(() => [Cat])
      async cats(): Promise<Cat[]> {
        // 查询逻辑
      }
    }
    
  4. 定义数据类型(Type):

    export type Cat = {
      id: string;
      name: string;
    };
    

这样就可以在NestJS应用中集成并使用GraphQL了。

回到顶部