NestJs
创建项目
初始化NestJs项目
- 安装
NestJs的cli
npm i -g @nestjs/cli- 新建
NestJs项目
nest new <project-name>整合graphql
- 安装
graphql
npm i @nestjs/graphql @nestjs/apollo graphql apollo-server-express- 在
src/app.module.ts文件中配置graphql
import { Module } from '@nestjs/common';
import { GraphQLModule } from '@nestjs/graphql';
import { ApolloDriver, ApolloDriverConfig } from '@nestjs/apollo';
import * as path from 'path';
@Module({
imports: [
GraphQLModule.forRoot<ApolloDriverConfig>({
driver: ApolloDriver,
autoSchemaFile: path.join(process.cwd(), 'src/schema.gql'),
sortSchema: true,
}),
],
})
export class AppModule {}postgres数据库的准备
- 创建
docker的postgres具名数据卷
docker volume create postgres_data- 启动
postgres的docker容器
docker run --name postgres -e POSTGRES_PASSWORD=root -p 5432:5432 -v postgres_data:/var/lib/postgresql/data --restart=always -d -- postgres:latest- 进入
postgres的docker容器
docker exec -it postgres /bin/bash- 在容器中进入
postgres的cli
psql -U postgres- 在
postgres的cli中创建mydb数据库
create database mydb;整合prisma
- 安装
prisma
npm i prisma --save-dev
npm i @prisma/client- 初始化
schema.prisma
npx prisma init- 配置
.env文件中DATABASE_URL为自己的数据源地址
DATABASE_URL="postgresql://postgres:root@localhost:5432/mydb?schema=public"- 在
src/prisma.service.ts中配置@prisma/client
import { INestApplication, Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
async onModuleInit() {
await this.$connect();
}
async enableShutdownHooks(app: INestApplication) {
this.$on('beforeExit', async () => {
await app.close();
});
}
}在tsconfig.json中添加esModuleInterop配置
{
"esModuleInterop": true
}