Aventuras con NestJS: API를 구성합니다. 파트 1
La aplicación final va a evolucionar con el tiempo, pero como minimo va a incluir:
La aplicación va a ser un sistema de gestion para una libreria que vende libros usados, ofertas y nuevos, algunas de las tecnologias que voy a utilizar:
관리자가 관리할 수 있도록 프런트엔드를 생성할 수 있습니다.
En este artículo vamos a empezar configurando el proyecto:
Empezamos creando una nueva aplicación:
nest new {app_name}
si no tienen instalado el CLI de nest pueden instalarlo con: npm i -g @nestjs/cli
Es una gran herramienta para facilitar el desarrollo, cuenta con generadores para evitar escribir código repetitivo. Al correr el comando para crear una nueva aplicació nos va a preguntar que package manager queremos usar, yo voy a elegir yarn
.Instalemos los primero paquetes que vamos a usar:
yarn add @nestjs/config @nestjs/graphql @nestjs/apollo @nestjs/typeorm apollo-server-express graphql typeorm pg
Para configurar GraphQL y TypeOrm tenemos que modificar nuestro archivo
app.module.ts
범죄자:@Module({
imports: [
ConfigModule.forRoot({
isGlobal: true,
}),
TypeOrmModule.forRootAsync({
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
url: configService.get('POSTGRES_URL'),
// acá vamos a ir agregando las entidades que creemos-
entities: [],
type: 'postgres',
synchronize: true,
}),
}),
GraphQLModule.forRootAsync<ApolloDriverConfig>({
driver: ApolloDriver,
inject: [ConfigService],
useFactory: (configService: ConfigService) => ({
playground: true,
debug: true,
autoSchemaFile: path.join(process.cwd(), 'src/graphql/schema.gql'),
}),
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
El primer modulo que importamos es ConfigModule para poder acceder à la información de archivos
.env
, y lo ponemos como global para poder usarlo sin tener que importarlo en otros modulos. Después vamos con TypeOrmModule para trabajar con la base de datos, syncronize: true
es para que TypeOrm mantenga sincronizada la base de datos con las entidades que definimos en nuestro código, en producción esto no es recomendado y habría que utilizar migraciones.Para trabajar con GraphQL vamos a usar el "Code-first approach", para eso configuramos la opción
autoSchemaFile
. GraphQL automáticamente basándose en los decoradores que utilizamos en nuestras clases y sus propiedades.Antes de poder correr nuestra aplicación tenemos que tener una base de datos a la cual acceder, para eso yo voy a usar Docker Compose, voy a agregar un archivo
docker-compose.yml
en el directorio base, y adentro de ese archivo:version: '3'
services:
postgres:
image: postgres:14
container_name: postgres_db
restart: unless-stopped
volumes:
- ./postgres:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
POSTGRES_DB: postgres
POSTGRES_PASSWORD: postgres
Docker Compose를 사용하지 않는 경우 로컬 기반 데이터베이스를 설치하는 데 사용할 수 있습니다.
파라 크리어 누에스트로 프라이머 리졸버 우사모스
nest g resolver app --flat
y agregamos:import { Resolver, Query } from '@nestjs/graphql';
@Resolver()
export class AppResolver {
@Query(() => String)
hello() {
return 'hello world';
}
}
Con todo esto ya podemos correr la aplicación con
yarn start:dev
y navegar a localhost:3000/graphql
Para ver el playground de GraphQL y probar nuestra query.Pueden ver el código en este repositorio: nest-adventures
Eso es todo por ahora, en la siguiente parte vamos a agregar los productos y funcionalidades relacionadas a ellos.
Muchas gracias por leer. Este es el primer artículo que escribo, asi que cualquier comentario sobre como mejorar o si les gusto el contenido es altamente apreciado.
Reference
이 문제에 관하여(Aventuras con NestJS: API를 구성합니다. 파트 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/franciscomessina/aventuras-con-nestjs-construyendo-una-api-parte-1-5c6f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)