Aprende a crear un proyecto de Nestjs y React, usando Typescript que permita hacer operaciones CRUD
Consideraciones
- El frontend hará uso de React junto con Typescript (ya que estaremos usando Typescript en el backend con Nesta, tambien lo usaremos con React)
- El frontend sera creado con Vite, usando tambien Typescript
creacion del proyecto
mkdir nestjs-react-crud
cd nestjs-react-crud
creacion del backend
nest new tasksapi
creacion de modulo de tareas
nest g mo tasks
nest g co tasks --no-spec
nest g s tasks --no-spec
Conectar a Mongodb
npm i @nestjs/mongoose mongoose
Luego en en app.module.ts:
import { Module } from '@nestjs/common';
import { TasksModule } from './tasks/tasks.module';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
TasksModule,
MongooseModule.forRoot('mongodb://localhost:27017/nestjs'),
],
controllers: [],
providers: [],
})
export class AppModule {}
crea un esquema en schema/task.schema.ts:
import { Prop, SchemaFactory } from '@nestjs/mongoose';
import { HydratedDocument } from 'mongoose';
export type TaskDocument = HydratedDocument<Task>;
export class Task {
@Prop()
title: string;
@Prop()
description: string;
@Prop()
done: boolean;
}
export const TaskSchema = SchemaFactory.createForClass(Task);
Luego en task.module.ts:
import { Module } from '@nestjs/common';
import { TasksController } from './tasks.controller';
import { TasksService } from './tasks.service';
import { MongooseModule } from '@nestjs/mongoose';
import { Task, TaskSchema } from 'src/schemas/task.schema';
@Module({
imports: [
MongooseModule.forFeature([{ name: Task.name, schema: TaskSchema }]),
],
controllers: [TasksController],
providers: [TasksService],
})
export class TasksModule {}
Añadir validaciones
https://docs.nestjs.com/techniques/validation
Despliegue
En cuanto al despleigue de la aplicación estaremos desplegando cada proyecto por separado, de alli tambien que hayamos necesitado de instalar CORS, ya que obtendremos dominios distintos