使用NestJS和GraphQL创建开发环境

使用NestJS和GraphQL创建开发环境。

目录

    1. 创建 NestJS 应用程序

 

    1. 建立 GraphQL 的依赖关系

 

    1. 准备 mysql(docker)

 

    建立 mysql 的依赖关系

创建一个NestJS应用程序。

使用NestCli来构建NestJS应用程序。

如果尚未安装 cli,请从上面的 URL 地址安装 cli,并创建应用程序。

$ nest new nestjs-graphql
$ npm run start:dev

请确保在 localhost:3000 中显示以下屏幕。

localhost.png

2. 建立 GraphQL 的依赖关系

我在Qiita的文章中提到,我们将解决依赖关系。

我們將安裝使用GraphQL所需的四個元件。

$ npm i --save @nestjs/graphql graphql-tools graphql apollo-server-express

为了避免在库的类型定义中出现错误,请编辑tsconfig.json文件。

{
  "compilerOptions": {
    "module": "commonjs",
    "declaration": true,
    "removeComments": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es2017",
    "sourceMap": true,
    "outDir": "./dist",
    "baseUrl": "./",
    "incremental": true,
    //ここから追記
    "skipLibCheck": true
  //ここまで追記
  },
  "exclude": ["node_modules", "dist"]
}

我们将根据公式文档来定义GraphQL的依赖关系到app.module。

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

@Module({
  imports: [
    GraphQLModule.forRoot({
      debug: false,
      playground: true,
      typePaths: ['./**/*.graphql'],
      definitions: {
        path: join(process.cwd(), 'src/graphql.ts'),
        outputAs: 'class',
      },
    }),
  ],
})
export class AppModule {}

启动服务器并访问play ground,确认play ground是否显示。

$ npm run start:dev

在下面以图形方式显示Play Ground。

playgorund.png

准备一个MySQL(Docker).

我們將添加docker-compose.yml和Dockerfile。

$ touch docker-compose.yml
$ touch Dockerfile

目前的目錄結構預計如下。

$ tree -L 1 -I node_modules
.
├── Dockerfile
├── README.md
├── dist
├── docker-compose.yml
├── nest-cli.json
├── package-lock.json
├── package.json
├── src
├── test
├── tsconfig.build.json
└── tsconfig.json

我們將創建一個僅包含MySQL的Docker容器,並逐步進行所需的啟動設定。

FROM mysql:5.7
version: '3.7'
services:
  db:
    build: .
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    tty: true
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: develop

最后,你要启动Docker并确认它是否正常工作。

$ docker-compose up
$ docker ps -a

搭建MySQL的依赖关系

我们将根据公式文件的指导来构建依赖关系。

$ npm install --save @nestjs/typeorm typeorm mysql

当安装完上述内容后,我们将在app.module中进行所需设置的记录。虽然这样做有些不礼貌,但我们仍会先记录一些能让它先运行的设置。

import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { TypeOrmModule } from '@nestjs/typeorm';
import { join } from 'path';

@Module({
  imports: [
    GraphQLModule.forRoot({
      typePaths: ['./**/*.graphql'],
      definitions: {
        path: join(process.cwd(), 'src/models/graphql.ts'),
        outputAs: 'class',
      },
    }),
    TypeOrmModule.forRootAsync({
      useFactory: () => ({
        type: 'mysql',
        host: 'localhost',
        port: 3306,
        username: 'root',
        password: 'example',
        database: 'develop',
        entities: [__dirname + '/**/*.entity{.ts,.js}'],
        synchronize: true,
      }),
    }),
  ],
})
export class AppModule {}

上述的简单设置已完成,现在只需随时添加GraphQL即可进行实现。

写一篇报告

广告
将在 10 秒后关闭
bannerAds