Transcripciones
1. Nestjs para principiantes: curso: Hola y bienvenidos a
mi curso sobre STS, un framework progresivo Node
JS para construir aplicaciones web eficientes y
escalables. Ses es un framework que combina
lo mejor de ambos mundos, la potencia y flexibilidad
de los nodos, sí, con la elegancia y
sencillez de TypeScript. Eso sí, te proporciona un modelador en realidad dependencia
tectorial,
inyección, manejo de excepciones, utilidades de
prueba y mucho más. En este curso,
aprenderás a usar
menos solo para crear una aplicación de blog con autenticación usando celular off
guard Mongoose. También
aprenderás a configurar tu entorno de desarrollo
e instalar un STS. Crear controladores, servicios, módulos, guardias y decoradores. Utilice la CLI de nidos para generar
código y ejecutar comandos. Conéctese a una
base de datos MongoDB usando Mongoose, los esquemas finos, Modelos, interfaces y videos, y siendo operaciones
codificadas para
publicaciones de blog y acciones de usuario. seguridad o los endpoints con autenticación
JWT y guardias manejan errores y
excepciones con gracia. Este curso está diseñado para
principiantes que quieran
comenzar con un SES o mejorar
sus habilidades existentes. No necesitas ninguna
experiencia previa con un STS, pero debes tener algunos conocimientos
básicos de Node.JS, JavaScript y un
poco de TypeScript. Por cierto, si quieres aprender más sobre NodeJS
y TypeScript, tengo otro
curso de escultura, cubre todo lo que
necesitas saber sobre. Observe que el curso
aprenderá a usar NodeJS para crear ojos API
RESTful, aplicaciones
en tiempo real, servidores
GraphQL y más. También
aprenderás a usar algunos de los frameworks
y bibliotecas más populares que
funcionan con nodos, sí, como explícitamente
como Mongoose, socket IO type ramp plus
validator y más. Ese curso fue diseñado para prepararte para usar Nes Yes, y darte una
base sólida de habilidades para las náuseas. Entonces, si estás interesado en
aprender náuseas, dolor, mejorar tus habilidades existentes, te
recomiendo encarecidamente que
consultes mi otro curso
sobre Skillshare. Ahora bien, esta
puntuación en pocas palabras está estructurada una manera particular que sigue las mejores prácticas
de desarrollo web. Su sección cubre un tema
específico con explicaciones claras,
ejemplos y ejercicios. También puedes descargar
el código fuente de cada sección
y seguirlo. También tendrás acceso a una
comunidad amigable y solidaria de compañeros e instructores en
Skillshare que están listos para ayudarte cuando
tengas preguntas o dudas. Entonces, ¿a qué estamos esperando? Inscribirse ahora y comenzar a
aprender NES ayer.
2. ¡Genera tu primer proyecto de Nestjs!: Bienvenido al primer capítulo
del módulo de loudness js. En este capítulo,
vamos a sumergirnos en el apasionante mundo de Nicias y aprender a crear una
sencilla aplicación de blog con autenticación. Estoy dentro del sitio web
eficiente de SES. Siéntase libre de echar
un vistazo a su alrededor y explorar la humedad que
sí tiene para ofrecer. Sin embargo, no se preocupe si se siente abrumado porque
en este módulo, estamos brindando
toda la información que necesita para comenzar con Nestea estará cubriendo lo básico y construyendo una aplicación
del mundo real. Podemos empezar a usar
Nicias con confianza. Ahora, ¿qué sigue? Sí. Lets us es un framework
que se construye sobre el popular
framework CS extra para NodeJS. Pero a diferencia de express, JS proporciona una estructura más modular y escalable
para su aplicación, también incorpora muchas de las mejores prácticas y
patrones de diseño utilizados en Angular. No es necesario tener
ningún conocimiento previo de Angular para entender STS. Y de hecho, los proyectos
que construimos juntos en el módulo anterior usando Node.JS expresado en TypeScript, ya
te
han dado una muestra de cómo esta estructura amarilla
es sus aplicaciones. En este módulo,
profundizaremos en un STS y cómo se puede usar para construir aplicaciones
escalables y mantenibles. También utiliza la potencia
de TypeScript y la última
arquitectura Angular para hacer que construcción de
aplicaciones del lado del servidor más eficiente y agradable. Y este módulo,
estaremos usando la CLI, o Interfaz de Línea de Comandos, que es una herramienta increíble que nos
permite generar fácilmente un nuevo proyecto con todos los archivos y
directorios necesarios para comenzar. Ahora, antes de
entender esto, sí. Cli instalado PMPM be npm es un administrador de
paquetes eficiente de espacio en disco rápido para Nokias. Ahorra
espacio en tu disco y asegúrate no perder el tiempo en
instalación y mantenimiento. El APM también está disponible
en Windows, Linux y Mac. Para detener el NPM, necesitará tener instalado NPM o Yarn
en su sistema. Una vez que tengas instalado uno de estos
Package Manager, sigue
adelante y abre tu terminal, entonces puedes ejecutar el
siguiente comando. Si estás dentro de Linux, usarás npm. Instala ese C, P y B F. Pero si estás en
ventanas laterales como yo, tienes que usar hilo en eso Ella no detiene PMPM como paquete
global, entonces P NPM. Bien, después de eso,
puede instalar la CLI de Azure ejecutando
el comando npm. Agrega eso G. Entonces vamos a vernos. Cli, tengo tanto BI
como BPM y SES amarillo
ya instalados. Entonces, una vez que la instalación
esté completa en su sitio, podemos usar el CLI para
generar un nuevo proyecto. Vamos a llamarlo blog
sí tiene que hacer esto. Ejecutaremos el nido de comando, luego enchufa el tablero. Como puedes ver, podemos acceder a la CLI de Azure con el
nombre nest y luego usar la nueva etiqueta para generar
un nuevo proyecto de app de blog. Ahora pulsa Enter. Vamos a solo CLI te solicitará que elijas entre estos
tres gestores de paquetes. Entonces, si instalaste
PMPM como yo, puedes elegir PMPM, seleccionar el NPM y
luego presionar Enter. Pero si no lo hiciste, puedes elegir
entre NPM o Yarn. Ya lo hice. Entonces, cuando termines, tendrás un
nuevo proyecto de SES listo para usar dentro de
una aplicación de guión de blog. Entonces, en la raíz de nuestro proyecto, encontrarás varios archivos de
configuración que son comunes
a la mayoría de los proyectos. Estos archivos contienen
información importante sobre nuestro proyecto. Eso dice dependencias y guiones dentro de la bolsa es Jason. Pero uno de los consejos más
importantes es el error de pelusa ES. Ver, este archivo se utiliza para configurar las
reglas de linting para nuestro proyecto. Nos ayuda a mantener nuestro código
limpio y mantenible
asegurándonos de seguir las mejores prácticas
y estándares. Por eso te
recomiendo encarecidamente que instales una extensión con el nombre
ES lint side tu VSCode. Con esta sección, obtendrás comentarios
en tiempo real
y sugerencias sobre cómo mejorar tu código. Así que adelante e instala AS y extensión lateral tu VSCode. Bien,
volvamos al proyecto. También notarás
una carpeta de prueba y la raíz del proyecto. Esta carpeta contiene
dos archivos importantes, el archivo adyacente y el archivo txt dot spec
app. Así que solo el archivo JSON es
un archivo de configuración para solo un popular framework de pruebas
para proyectos JavaScript. Establece el
entorno de pruebas para tu nido sí. Aplicación. Sí. Y para la
especificación superior, el archivo ts, este es un ejemplo de
una prueba de extremo a extremo
para su aplicación. Por lo que
se utilizan pruebas de extremo a extremo para probar
la caída del imperio de
su aplicación de
principio a fin para garantizar
que todo funcione correctamente. Ahora el resumen,
el archivo ts plaga la respuesta del
punto final raíz de su aplicación. Utiliza la biblioteca de
pruebas de soporte para enviar una solicitud a la aplicación
y probar la respuesta. Esta es una excelente manera de garantizar que su aplicación funcione como se esperaba y detectar
cualquier problema al principio del proceso de
desarrollo. En general, la carpeta de prueba y los archivos en su interior
juegan un
papel crucial para garantizar la calidad y confiabilidad de su
Nestea, esta aplicación. Ahora volvamos
al archivo package.json. Aquí podemos ver varios scripts o
comandos escritos que podemos usar para ejecutar y administrar
nuestra aplicación. Estos scripts hacen que nuestro proceso de
desarrollo
sea mucho más fácil y más simplificado. Algunos de los guiones más
importantes incluyen el script de inicio. Este comando se utiliza para iniciar la aplicación en modo de
desarrollo. Cuando ejecutamos npm, npm soso
comenzando a terminal, compilará e iniciará la aplicación en
el puerto especificado. Sí, pero prefiero, o todos los desarrolladores prefieren ejecutar estos start calling sí, porque este comando aquí
contendrá la etiqueta de reloj dados dados dados que nos permite
ejecutar la aplicación y lo que cambia
al mismo tiempo. Ahora tenemos también
el script de compilación. Este script se utiliza para compilar y construir la aplicación
en modo de producción. versión compilada
de la aplicación estará lista para ser implementada. Y vamos a
conseguir esta carpeta dentro del directorio
de nuestro proyecto. También tenemos el script de prueba. Estamos usando el script para ejecutar los casos de prueba para
la aplicación. Podemos usarlo para
asegurarnos de que nuestra aplicación funcione como
se esperaba
antes de implementarla. Y el tal vez un nuevo comando
para nosotros es el comando lint. Este comando se utiliza para ejecutar el proceso de linting en nuestro código. Linting nos ayuda a mantener el estilo de código
del ecosistema y nos
ayuda a evitar errores comunes de
codificación. Y hablemos
del formato o Comando. Este comando, el formato se utiliza para formatear nuestro
código de acuerdo con las reglas especificadas en las configuraciones de
linting dentro del archivo US land ARC GIS. Puedes jugar con estas configuraciones
como desees. Pero las configuraciones predeterminadas proporcionadas por un STS
son más que suficientes. Sí, así que vamos a cerrar esto. Y en general, estas tiras dentro del archivo
adyacente más grande o muy útiles para automatizar
el proceso de desarrollo y
facilitarnos la gestión de nuestra aplicación. Es importante
entender lo que protagoniza cada uno de estos guiones
y cómo podemos usarlos a nuestro favor. Bien, ahora vamos a ir
a la carpeta SRC y
repasar cada archivo dentro de esta carpeta y
explicar el propósito de la misma. Tenemos el archivo main.js. Este es el punto
de entrada de nuestra aplicación. Crea una instancia de la aplicación y comienza a
escuchar el puerto especificado. También tenemos el
módulo app dot que tiene archivo. Este es un modelo que agrupa a
todos los controladores, servicios, vibraciones y
más y un techo. Es similar al concepto
de módulos en Angular. También tenemos la app
dot controller.js. Aquí es donde definimos nuestras rutas y manejamos las solicitudes
entrantes. Utiliza el mayor
es como GET o post, que no se
les da a app.get o secuestra post en expresado. La clase de controlador en
SES es responsable definir los puntos finales y manejar las solicitudes HTTP entrantes. Su método dentro
del controlador representa una ruta
en su aplicación. Los métodos pueden manejar diferentes tipos de
solicitudes como GET, post, PUT, delete, etcétera. Esto se hace con la
ayuda de decoradores todavía, como la categoría posterior, que equivale al método
get en Express. Ahora tenemos también al curador
controlador. Esto se utiliza para identificar
la clase como controlador. Esto es importante
porque nos permite saber que esta clase debe manejar las solicitudes HTTP entrantes. Bien, pasemos al archivo services.js de
secuestros. Ahora bien, aquí es donde
ponemos nuestra lógica de negocio. Es un gran lugar para poner
cualquier consulta de base de datos u otra lógica compleja que nuestros
controladores necesiten usar. Tenemos el inyectable, mayor se usa esto
para identificar clases que se
pueden inyectar como dependencias
en otras clases. En nuestro ejemplo, tenemos el
App Service esa clase sí, que está marcada como inyectable. Esto sí significa que
se puede usar como dependencia en otras
partes de nuestra aplicación, podemos inyectar el vidrio App
Service en el controlador usando el decorador
inyectable y luego llamar al método get's hello desde la clase App Service dentro nuestro control, como
puedes ver aquí. Ahora bien, esta es una forma poderosa administrar dependencias
en tu aplicación, facilitando la
prueba y el mantenimiento tu abrigo organizando
tu código de esta manera, puedes asegurarte de que
tu controlador se esté enfocando en manejar las solicitudes
entrantes. Por qué son los observadores clase
se puede utilizar para manejar la lógica
más compleja. Ahora mismo que hemos
configurado la estructura del proyecto, ejecutemos el servidor y verifiquemos el navegador para ver la respuesta
del enrutador hello world. Para ello, ejecutamos el
comando npm run start, site, nuestro terminal, o PMPM porque
nosotros, lo hemos instalado. Así que sé npm, corre, empieza a caer, muerte
y golpea Enter. Por supuesto, necesitamos
navegar a un blog que esté arriba. Y luego unir el
comando una vez más, ser npm run empezar a entrar ahí. Bien, si obtienes
esta última línea aquí, aplicación se
inició con éxito, significa que has
iniciado tu aplicación con éxito. Ahora sigamos adelante y
abramos el navegador y probemos para el
mundo hola sobre una respuesta. Aquí, naveguemos
hasta localhost mil y
esperemos la respuesta. Y aquí vamos, la cadena
Hello World. Ahora podría preguntarse
cómo lo hicimos, aunque dentro del controlador. Déjame colapsar esto,
este router aquí, este método representa el punto final
raíz de nuestra API. Puedo cambiar esto
agregando una cadena dentro
del decorador get
así, por ejemplo hola. Entonces guarda. De esta manera. Vamos a conseguir la cadena Hello World
dentro de la ruta hello. Volvamos al navegador. Permítanme navegar primero a la raíz y al punto
de aplicación. Puedes ver que no podemos obtener el punto final raíz de nuestra API. Y eso es porque lo
cambiamos a Hola. Como pueden ver, esto es
muy sencillo por
la ayuda de las motoniveladoras
que están dentro de las redes. Sí. Ahora, hemos instalado con éxito en unidades sí, Proyecto. Y tenemos una
comprensión básica de su estructura y principales peleas. En el siguiente capítulo,
profundizaremos en los controladores y servicios y modales y cómo
usarlos correctamente.
3. Preparación de mongoose: Hola a todos. En este video,
comenzaremos con un
proyecto bastante estructurado que
encontrarás en la sección de
recursos. Así que adelante, descárgalo
y ábrelo dentro de tu VSCode. Es importante
tomar un momento para entender la estructura de nuestro proyecto y por qué lo hemos dividido en componentes
más pequeños. Nuestra aplicación está organizada
en cuatro directorios principales, el directorio de aplicaciones, y en su interior el autor, blog, usuario final. Cada uno de estos
directorios contiene un conjunto de componentes
con un rol específico. Ahora el directorio de aplicaciones es el directorio principal para
estos tres componentes. Y contiene el modelo de
punto app, el archivo ts. Pero no vamos a trabajar
con esto en este momento. Pero cada uno de estos
directorios contiene un conjunto de componentes
con un rol específico. Estos componentes se
dividen además en controladores, servicios y grasas de esquema. Pero el directorio está vacío
por ahora porque
vamos a agregar unos archivos
y configuraciones muy
específicos a través de él. Sí, pero ahora vamos a trabajar sólo con estos
dos componentes, el blog y el usuario. Por lo que esta estructura nos ayuda a administrar y mantener el
código de manera más efectiva, además de
facilitar la escala de la aplicación. Al igual que cuando agregamos nuevos componentes
o expandimos los existentes, no
afectan al
resto del sistema. Adicionalmente, este
detector desacopló diferentes partes de
nuestra aplicación, haciéndola menos dependiente los
detalles de implementación de otras partes. Y por último, la organización de
archivos estructurados
facilita a los desarrolladores comprender las diferentes
partes de nuestra aplicación, cómo encajan y
cómo funciona todo el sistema, lo
que lo convierte en la mejor práctica
a seguir en el desarrollo de SDS. Ahora, en resumen, nuestra estructura de
proyecto da como resultado una mejor
escalabilidad de administración de código para hacer frente al enlace, y más fácil para comprender
el diseño general del sistema. Bien, ahora en este proyecto, usaremos MongoDB
como nuestra base de datos para almacenar nuestras publicaciones de blog
e información de usuario. Trabajamos con MongoDB
y honesto sí proyecto. Usaremos la
popular biblioteca de
modelado de objetos MongoDB , Mongoose. Mongoose proporciona una solución simple
y elegante para definir esquemas,
validar datos y consultar la base de datos
MongoDB con Mongoose podrá
interactuar fácilmente con nuestra base de datos MongoDB
y modelar nuestros datos una
manera que tenga sentido
para nuestra aplicación. Así que comencemos e integremos uno va
a nuestro proyecto. Primero, navegaremos
hasta el
sitio web MongoDB others para actualizar
nuestro URI MongoDB. Entonces aquí, si no
tienes una cuenta, puedes hacer clic en este botón de unidad para EE
y crear una nueva cuenta. O si tienes una
cuenta solo tienes que iniciar sesión en la sección de clústeres. Si eres nuevo en MongoDB, puedes crear un
nuevo clúster usando este botón y luego elegir el clúster
compartido para obtener un plan gratuito y luego crear el clúster haciendo clic
en este botón. Una vez que hayas terminado De eso, vuelve a la
sección de clústeres y haz clic en Conectar, y luego conecta
tu aplicación. Y este es el URI de MongoDB. Vamos a usar este URI para conectar nuestro proyecto ECS
a la base de datos MongoDB. Asegúrate de no seleccionar ningún GS aquí. Y la última versión de NodeJS. Bien, ahora vamos a copiar esto. Y luego
volvamos al código VS. Y dentro del archivo, encontrarás una variable URI
MongoDB. Adelante y pega
nuestro URI ahí. Y luego vamos
a cambiar la contraseña con la contraseña real
de nuestra cuenta. Entonces si ya tienes
tu contraseña, puedes ponerla aquí. Si no guardó la contraseña, puede volver a MongoDB Atlas que cerrar esto
y acceder a la base de datos. Y luego haz clic en
Editar en tu cuenta, luego haz clic en Editar contraseña. Y luego aquí podemos
generar una nueva contraseña haciendo clic en el botón de generación automática de contraseña
segura. Entonces voy a hacer eso. Voy a copiar esto. Y luego asegúrate de
tomar un usuario de actualización. Y luego volver al código VS. Adelante y básicamente contraseña ahí y luego guarda el m5. A continuación vamos a
abrir la terminal. Y luego vamos
a instalar Mongoose. Ejecutemos el comando
PMPM, luego mangosta. Y porque estamos
usando esto, sí, vamos a instalar Mongoose. Este módulo nos va a
proporcionar un conjunto de decoradores y otras
útiles funciones de utilidad para trabajar con MongoDB. Presiona Enter y
espera la instalación. Una vez que tengamos nuestros
módulos e instalados, seguiremos adelante e
importarlo a nuestro modelo adulto, el archivo ts, cerraremos la terminal
y aquí arriba, eso es M4. Y luego dentro de la matriz
imports aquí, vamos a importar el módulo
mangosta y usarlo en nuestro proyecto llamando
al módulo mangosta punto para el método root. Entonces sigamos adelante y escribamos el módulo cuatro de
mangosta. Y dentro de este método, vamos a agregar el URI
MongoDB de proceso. Subrayado de Mongo DB. Pero para poder
acceder al imperio, necesitamos usar el
servicio de configuración proporcionado por nest. Sí, tenemos que
instalarlo primero. Así que adelante y vuelve a abrir
el lado terminal aquí, usa el npm y luego agrega. Eso dice Guardar para guardar
como dependencia dev, el Nest CSF. Después modo config. Pulsa Enter, espera
la instalación. Bien, una vez completada la
instalación, podemos importar el módulo config dentro del módulo app y
controlar su comportamiento, el método cuatro root. Entonces sigamos adelante
paso a paso e importemos. Ahora, vamos a poner
esto dentro de la matriz. Adelante y agrega una coma. Y entonces aquí, derecho, config módulo cuatro root. Y este método aceptará
un objeto de propiedades. La primera propiedad es global. Esta propiedad,
va a decirle al módulo de
configuración que haga que el archivo m esté disponible
globalmente
dentro de nuestra aplicación. La segunda propiedad
es la ruta del archivo. Ahora, agreguemos el archivo
punto así. Entonces me acaban de agregar el nombre. En este caso, nos estamos refiriendo al directorio raíz
de nuestro proyecto. Y el modelo de conflicto
va a
buscar ese archivo dentro
del directorio raíz. Bien, ahora puedes agregar varios archivos
agregando una matriz. Y entonces si tienes como no
int y otro archivo int, como tal vez, no
sé nada. Puedes agregarlo
así como una matriz. Pero para nosotros, sólo
tenemos un expediente, así que mantengámoslo así. Ahora como puedes ver, la clase modal config
es una poderosa herramienta que nos permite acceder a la variable de
entorno
globalmente en nuestro proyecto. Lo hace mediante el uso
del módulo de configuración para el método de arranque, podemos configurar fácilmente el módulo para que las variables de
entorno almacenadas en el archivo punto M sean accesibles en toda
la aplicación. Esto significa que no tenemos que amperiar manualmente
el archivo punto M en cada módulo o componente que necesite acceder
a estas variables. En su lugar, podemos simplemente
usar el servicio de configuración para
acceder a las variables
de entorno desde cualquier lugar de
nuestra aplicación. Esto hace que sea mucho más
fácil administrar nuestra
configuración y mantener un entorno consistente en todas las partes de nuestra aplicación. Bien, ahora hemos terminado
de configurar Mongoose y estamos todos preparados para comenzar a
trabajar en nuestra aplicación. Entonces en el siguiente video, vamos a crear
nuestro esquema de blog. Aparte del esquema de puntos del blog, el archivo ts que usa Mongoose lo hizo en
los proyectos anteriores, pero esta vez
va a ser ligeramente diferente porque
estamos usando nest. Sí. Entonces nos vemos ahí.
4. Diseñar e implementar el esquema de blog: En este video, crearemos el esquema de blog en
nuestro proyecto nest yes. Comenzaremos abriendo el directorio de componentes sanguíneos y luego bloquean el
esquema al archivo ts. Dentro de este archivo,
Empecemos exportando una nueva clase y ponerle un nombre bloqueado. Dentro de esta clase
agregaremos dos propiedades, title of type string y
content of type string. Ahora tenemos algunas áreas
aquí viniendo de ES y todo lo que tienes que hacer
es guardar el archivo. Si los errores no
desaparecieron automáticamente, puedes ir a Archivo y preferencias que ajustes
y buscar ES lint. Desplázate hacia abajo y
asegúrate de habilitar ES y como
formateador para tu VSCode. Y luego desplazarse hacia arriba
en ajustes de Jason. Y luego asegúrate de copiar todas estas líneas para
citar tu configuración, el archivo adyacente,
luego cierra. Esto. Aún así no funcionó para ti. Asegúrese de tener LLF como secuencia
de fin de línea.
Tu VS, VSCode. Puedes cambiarlo desde aquí, pero esto
volverá al valor predeterminado como LLF cuando
vuelvas a abrir VSCode para obtener. Entonces para que esto sea permanente, puedes volver a la configuración y luego
buscar fin de línea. Desplázate hacia abajo y asegúrate elegir la barra diagonal n como el carácter
de fin de línea. Entonces cierra esta prueba
nuevamente el archivo, si aún tiene algunos errores, vuelve a RRC más guapa y
agrega final de línea igual L F. Ahora bien, esta es toda la configuración
requerida para tener higos autos
en Guardar con ES. Y ahora
volvamos a nuestro esquema. Entonces esta es solo una clase
simple y aún no
es un esquema de mangosta. Para convertirlo en un esquema de mangosta, utilizaremos este
decorador de esquemas
importado de T S Mongoose. Así que adelante e importar esquema de Nes
Sí, biblioteca mangosta. Y vamos a colocarlo en lo más alto
de nuestra clase de sangre. Así. asegura de que no haya líneas entre la clase
y el integrador. Ahora para identificar las dos propiedades como propiedades de
Mangosta, usaremos otro
decorador e importaremos del mismo paquete. Nombra la sonda y
colócala en la parte superior de cada propiedad. Por el título. Propón para el contenido. También podemos agregar alguna
configuración a su propiedad agregando un objeto dentro del decorador de
propiedades. Entonces, por ejemplo, si quieres que se requiera el
título, podemos agregar un objeto y luego agregar la propiedad requerida
y establecerla en true. De igual manera para la propiedad de
contenido. Entonces voy a copiar ese
objeto y pegarlo aquí. Después guarda para eliminar todos
los errores de Eastland. Ahora para exportar la
clase de sangre como esquema, vamos a importar la clase de
fábrica de esquemas de esta sí, última
biblioteca de mangostas aquí, ¿verdad? Esquema, fábrica. Y otra pero voy a
exportar una constante y nombrarla log schema y establecerla
igual a schema factory. Entonces crea un método de clase y vamos a
pasar la clase de sangre. Esto configurará
nuestro esquema de blog. Ahora, también necesitamos exportar el tipo de documento de
blog
para este archivo. Para ello, eso es importante. El documento hidratado directamente
del paquete Mangosta. Y luego en la parte superior aquí, vamos a exportar
un tipo y nombrarlo, tapar documento y configurarlo
igual a documento hidratado. Y pasar el enchufe. Por último, para que el esquema sea accesible en toda
nuestra aplicación, necesitamos ir al módulo app. Déjame primero decir esto
e ir al módulo app. Y luego vamos a usar el módulo Mongoose
dentro de la matriz imports, así, Mongoose deal. Y esta vez vamos
a usar el método feature. Y dentro de ella
vamos a pasar una matriz. Y esta matriz
contendrá modelos Mongoose. Aunque es modelo de mangosta es un objeto con dos propiedades. El primer inmueble es nombre. Y podemos obtener el nombre del curso
de clases de sangre. Hay que importarlo de blog,
blog ese esquema nombre de punto. Y la segunda propiedad
es la propiedad de esquema. Y vamos a obtener el
esquema del esquema del blog y asegurarnos de
importarlo también del blogueo en
schema, el archivo ts. Ahora el
método Mongo is model.fit se utiliza para importar modales
Mongoose en un módulo de
características específicas en STS. Este método toma en dos
propiedades, nombre y esquema. La propiedad name especifica
el nombre del modelo que se importar y generalmente se a
importar y generalmente se
establece en el nombre de
la clase modelo. La propiedad schema especifica el esquema de mangosta que corresponde al
modelo que se está importando. Mediante el uso del
modelo de mangosta para el método de función. Hacemos que nuestros modelos Mongoose sean accesibles dentro de ese módulo. Ahora bien, la razón por la que tuve importar el esquema del blog
aquí es porque el módulo app que tiene
servicio de archivos como módulo raíz
en tu nido sí. Proyecto. Es responsable de
reunir todos los
diferentes componentes, controladores y proveedores
que componen su aplicación. Al importar estos módulos
en el módulo de la aplicación, el archivo ts,
los estamos poniendo a disposición de todo el mundo. Deseche su aplicación. Esto le permite reutilizar fácilmente
componentes y proveedores, haciendo que su código sea más organizado
y más fácil de mantener. Cuando estás creando
un nuevo componente, es importante recordar
importarlo al módulo app, el archivo ts, para que pueda ser utilizado por otras partes
de tu aplicación. De igual manera, cuando crees
un nuevo modelo de Mongoose, también
necesitarás
importarlo al módulo app, el archivo ts, para que pueda ser utilizado por tus controladores
y proveedores. Esto le permite interactuar
fácilmente con su base de datos MongoDB y realizar operaciones
como crear, leer, actualizar y
eliminar documentos. Bien, entonces esto
concluye esta lección. Y el siguiente, profundizaremos en el servicio de blog
que archivo ts. Aquí es donde
ocurre la verdadera magia ya que usaremos
el modelo de bloques que acabamos crear para realizar diversas operaciones
de
base de datos desde leer y
crear blogposts, actualizarlos y eliminarlos lo
cubriría todo
en la siguiente lección. Así que asegúrate de tener tus notas mano y prepárate para codificar. Te veré en la siguiente lección.
5. Creación de un servicio de blog: En este video, estaremos
explorando el poder de servicios en SES mediante
el uso de la clase de servicio de blog, que ya
se ha configurado con el decorador inyectable en
el archivo block services.js. Entonces, antes de comenzar,
me gustaría recordarles que toda esta
configuración de este video
ya está disponible en el proyecto al pasar a la sección de
recursos. Así que asegúrate de descargarlo,
ábrelo en tu editor de
código preferido y ejecuta PMPM instalando el terminal para descargar todos los paquetes
necesarios. Con eso fuera del camino, vamos a sumergirnos en el mundo
de los servicios y SES. Por lo que esta clase
se encargará de administrar todas las operaciones de nuestra
base de datos. Eso dice recuperar, crear, actualizar y
eliminar publicaciones de blog. Al utilizar el decorador
inyectable, podemos definir esta clase
como un servicio que
se puede reutilizar fácilmente a lo largo de
nuestra aplicación. Al final de este video, tendrás una
sólida comprensión de cómo funcionan los servicios en SES y cómo usarlos para
interactuar con la base de datos. Así que comencemos. Ahora, en las lecciones anteriores, hemos discutido
la importancia
del decorador inyectable en SDS. Este decorador se utiliza para indicar que la
clase está destinada a ser como un servicio que puede ser inyectado en
otros componentes. Es un aspecto crucial
de escribir
código limpio, modelador y mantenible en SDS. Mediante el uso del decorador
inyectable, podemos manejar fácilmente
dependencias y superficies de
sillas entre diferentes
partes de nuestra aplicación. Así que no olvides agregar el decorador inyectable antes definir tu
clase de servicio en SDS. Dicho esto,
está firmado para usar el poder de MongoDB
dentro de nuestro servicio. Para ello, necesitamos importar el decorador de modelos inject de una biblioteca
de mangosta de SES. Este decorador se utiliza para inyectar un modelo Mongoose en
un servicio de inicio, facilitando la realización de operaciones de base de datos
en el modelo. En nuestro caso, queremos definir una variable privada dentro del
constructor de esta clase. Vamos a enchufar modal. Y va a ser de
tipo modelo Mangosta. Para ello, necesitamos importar
la interfaz Moodle
desde Mongoose. Esta interfaz es una interfaz
genérica que acepta un documento de
mangosta. Aunque en nuestro caso,
vamos a pasar el documento de sangre importado
del blog, ese archivo de esquema. Ahora esta variable privada
va a ser inyectada usando el decorador
modal inject. Esto, el calificador
aceptará el nombre del modelo de blog, puede obtenerlo del nombre de
la clase de blog y asegurarse de desplegar el archivo de esquema de
punto de blog de clase de blog. Ahora con esta variable
inyectable, podremos realizar diversas operaciones de bases de datos
en nuestro blog Moodle, y hacerla accesible
en todo nuestro servicio. Ahora que tenemos nuestra
conexión MongoDB establece un inicio creando algunos métodos para realizar operaciones de
base de datos. Primero, creamos
el método create. Asegúrese de que sea asíncrono. Este método va
a ser
responsable de crear nuevos bloqueos. Pero antes de comenzar a trabajar
en el método en sí, es importante tener
en cuenta los argumentos que el método lo tomará. En lugar de tomar directamente
en los argumentos así, cadena de
título, contenido, cadena. Es
una práctica recomendada crear objetos de transferencia de datos
o una interfaz DTO en otro archivo separado
que contenga los datos
que queremos guardar. Esto nos ayudará a mantener la estructura de los
datos y evitar cualquier error que pudiera surgir al
pasar los datos
de Anchorage al método. O esto,
encontrarás un crear un DTO, el archivo ts, guardar
la carpeta de detalles. Este archivo vamos
a exportar y crear una interfaz con el nombre
crear blog, el verde azulado. Esta interfaz contendrá las
propiedades que queremos guardar, el título de type string y
el contenido de type string. Guarde este archivo y ciérrelo. Vuelve aquí, quita
el título y los argumentos de contenido y
reemplázalos por un argumento, crea blog, trato de tipo. Cree el registro D
PARA asegurarse de
importarlo desde la carpeta Tiers
y desde el archivo DO del creador. Ahora dentro del método create, necesitamos crear una
instancia de un modelo de blog. Así que adelante y crea
una constante de blog. Usa la nueva palabra clave. Y luego la esta palabra clave
para acceder al modelo de sangre. Y luego vamos a pasar
el detalle de crear blog. Esto creará una instancia
del modelo de bloques. Entonces tenemos que guardar eso
y devolverlo al cliente. Devolver un peso. Blog punto guardar. A continuación, vamos a crear otro método con
la actualización del nombre. Este método va
a ser responsable actualizar una entrada de blog específica. Primero, necesitamos crear
el blog de actualización DTO. Así que adelante y abre las
actualizaciones son DTO, el archivo ts. Y aquí exportar
actualizaciones de interfaz, enchufar el trato. Ahora para actualizar
esta entrada de blog específica, el cliente necesita enviar el ID. Así que vamos a esperar a que el
subrayado ID de tipo cadena. Como saben, Mongo almacena
id con un subrayado. Así que asegúrate de agregar eso. Entonces por el título
y el contenido, vamos a recibir eso
dentro de un objeto de props cliente. Y el título aquí es de tipo cadena y el
tipo de contenido cadena también. Pero queremos darle al cliente
la libertad de actualizar
solo título o solo. Pero hagamos que estas
propiedades sean opcionales agregando el signo de interrogación antes de
los dos puntos frente a cada propiedad. Guarde este archivo, ciérrelo. Aquí, guarda el método de actualización. Agreguemos el
blog de actualización que argumento TO. Va a ser de tipo
actualizar vlog video. Asegúrese de importar eso
desde el archivo de video actualizado. Ahora guarda el método de actualización. Vamos a usar el
método
find one y update de la biblioteca de mangostas para actualizar la entrada del
blog en la base de datos. Entonces vamos a
devolver un peso, este modelo de blog de punto, punto encontrar uno, y actualizar. Ahora este método, primero aceptaremos un objeto
como una consulta de filtro. Este objeto filtrará el documento del blog con
el ID de subrayado. Y lo podemos conseguir desde
el blog de Actualización puntos DTO. Y el riesgo de identificación. El segundo argumento
va a ser el documento actualizado
o la consulta de actualización. Por supuesto que puedes obtener
eso de actualizaciones blog dto dot client prompts. El último argumento va a ser un objeto con una nueva
propiedad establecida en true. La nueva propiedad
va a decirle al método
find one y update para que devuelva el documento de datos
en lugar del documento antiguo. A continuación, vamos a crear
un método asíncrono, y pueden obtener uno. Este método tomará el ID de la entrada del blog como
argumento de tipo string. Y va a devolver la blog
correspondiente
de la base de datos. Así que dentro de aquí, bien,
regresa, oh espera. Este bloque modal, encuentra uno. Este método
aceptará un objeto. Y dentro de ella
vamos a consultar nuestra entrada de blog con
el ID de guión bajo. Debe ser igual
al argumento ID. El siguiente método
va a ser bueno. Ah, y va a
ser responsable devolver las entradas del
blog y la base de datos. Ahora bien, este método no
aceptará ningún argumento. Y en cambio va a regresar
inmediatamente 08. Este modelo de registro de puntos. El método Find by ID tiene que aceptar un objeto vacío para poder devolver todas las entradas del
blog y la base de datos. Y finalmente, vamos a
crear el método delete one. Este método tomará
el ID de la entrada del blog como argumento de tipo
string y eliminará
la entrada de blog correspondiente de
la base de datos usando el método find
one y remove. Adelante y devuelve un peso, esta sangre modal que 0.1. Y eliminar y eliminar el documento del blog con el ID de guión bajo igual
al ID del argumento. Ahora vamos a establecer el tipo de
retorno de cada método. El método create es
una promesa que
resolverá un documento
de bloque de título. Para el método de actualización. Lo mismo. Promesa. Eso resolverá el documento del
blog aquí. Lo mismo también. Promesa. Enchufe para el get. Todos. Esto va a ser una promesa que resolverá
una matriz de bloques. Para el borrado,
vamos a enviar de vuelta no o un booleano. Puedes configurarlo como un tipo de resolución para este método o
puedes dejarlo vacío. Entonces vamos a guardar este archivo y
eso es todo para este video. Con estos métodos, ahora tenemos
unos servidores funcionales que pueden realizar todas las operaciones de
base de datos requeridas, pero voy a subir componente. En el siguiente video. Usaremos este servicio y
el controlador del blog para definir los endpoints de nuestra API. Así que estén atentos.
6. Creación de un controlador de blog: Bienvenido de nuevo. Hasta ahora hemos creado
con éxito
nuestro componente sanguíneo, que incluye el
esquema del blog y el Servicio de Sangre. Ahora es el momento de trabajar
en el controlador del blog. Encontrarás el punto de
partida para el proyecto en la sección de
recursos de video. Para comenzar, simplemente
descarga el proyecto y ábrelo en tu editor de
VSCode. Y antes de comenzar a codificar, asegúrese de ejecutar PMPM instalado en el terminal para instalar todas
las dependencias requeridas. En este video, estaremos creando el archivo blog dot
controller.js, que actuará como puente entre
el front-end y
el
back-end de nuestra aplicación utilizará este archivo para definir
los diversos endpoints para nuestro componente de blog
y también integrado
con nuestro servicio de blog para
realizar operaciones de base de datos. Entonces comencemos. Nuestro siguiente paso es sumergirnos en
el mundo de las uvas. Específicamente, vamos a estar echando un vistazo al decorador
controlador. Este decorador nos
permitirá hacer accesible
el controlador del blog
desde el router de RBI. Sin embargo, si queremos
cambiar el router de
la raíz a, por ejemplo, blog. Así. Simplemente podemos pasar
el blog string al control o a un decorador. De esta manera,
podremos controlar
la ruta donde se puede acceder a nuestro
controlador de blog. Siguiente paso, necesitamos importar
nuestro servicio de blog para poder utilizar todos los métodos de base que creamos en la última lección. Para ello, agregaremos sentencia import en
la
parte superior de este archivo e importaremos el Blood Service del blog que da servicio al archivo ts dentro
del controlador de bloques. Vamos a crear el constructor y definir una variable
llamada blogs. El servicio establecerá su tipo en
la clase de servicio de enchufe. De esta manera, TypeScript
puede entender las propiedades y métodos disponibles para nosotros desde
el servicio de blog. Esto hace que nuestro código
sea más fácil de escribir, mantener y libre de errores que
ocurrirían en tiempo de ejecución. También ayuda con la finalización del
código, lo que nos permite escribir código de
forma rápida y precisa. Ahora vamos a crear
el Create Router. Primero, agregaremos un nombre de
método asíncrono y crearemos. Pero solo tener este método por sí solo crear un enrutador
real funciona. Tenemos que decidir qué tipo de solicitud manejará este
enrutador. En nuestro caso, queremos enviar la información del blog
del cliente al servidor. Entonces implementaremos
una solicitud de publicación. Podemos hacer esto fácilmente con
la decoradora de postes que podría ser importada del nido
que ha venido en paquete. Así que adelante y haz eso y colócalo en la parte superior del método
create, así. Ahora, el decorador más puede aceptar un argumento de
cadena opcional que representa la
ruta del enrutador donde
crean el enrutador
aceptará solicitudes. Si lo dejamos en blanco, el cliente enviará la solicitud al
host local 3,000 bloque. Sin embargo, si vamos
a agregar varios enrutadores, es mejor hacer que el
Create Router sea accesible a través de la ruta del enrutador create. Entonces hagámoslo. Ahora el método create
recibirá un argumento body. El argumento body
va a ser de tipo create log detail. asegura de importar la interfaz IO
del creador TO por. Ahora, agregar el argumento body dentro de nuestro método create no es suficiente porque necesitamos hacer una conexión entre el cuerpo de la
solicitud y este argumento. Ahí es donde entra el
decorador de carrocería de Nes Sí, entra, lo importa primero de un equipaje que
viene de SES. Y vamos a colocarlo
dentro de la lista
de argumentos de nuestro método create antes
del argumento body, así. Y ahora por fin, podemos usar
el servicio de blog para crear el documento de blog y
devolverlo al lado del cliente aquí. Devolver una lista de espera, blog de
puntos, servicio, Crear. Y luego vamos a pasar el argumento body
al método create. Cuando guardemos el archivo o desaparecerán
las áreas. Porque el argumento body
tiene el mismo tipo que el argumento DTO create blog
del método create. Y con eso, hemos completado la configuración del Create Router
en nuestro controlador de blog. Enhorabuena. En el siguiente video,
seguiremos trabajando con el controlador del
blog e implementaremos el resto
de los enrutadores
como actualizar, eliminar y obtener. Estos nos permitirán realizar todas las operaciones necesarias en nuestros documentos de blog también
repasaremos cómo manejar los errores
que puedan ocurrir durante estas operaciones y asegurarnos nuestra aplicación sea
robusta y confiable. Así que estén atentos para el siguiente video y sigamos
construyendo juntos.
7. Creación de un controlador de blog: Gran trabajo al llegar hasta
aquí. En la lección. En este siguiente segmento, vamos a echar
un vistazo al resto
de la clase de controlador de bloques. Empecemos por crear
la actualización Troutman. Primero, crearemos un método
asíncrono con el nombre de la fecha. Este método tomará
en un argumento body. Así que adelante, usa el decorador de cuerpos y crea el argumento body y
dale el tipo de actualización. Vlog video y asegúrese de
importarlo desde el archivo de video. Ahora este método va
a recibir una solicitud de post. Entonces usemos el integrador de post y dale la actualización de ruta. Aparte de este método, va a llamar
al método de actualización en
el servicio de blog. Así que adelante y regresa 08. Este servicio que actualiza y
pasa en el argumento body. Ahora bien, este método de actualización va a actualizar el
documento del blog en la base de datos. Pasemos
al enrutador get one. Sigue adelante y vuelve a crear un método
asíncrono, y es posible que obtengan uno. Este método nos permitirá
recuperar una sola entrada de
blog de la base de datos. Y tomará en un
argumento ID de tipo string. Este id se pasará como parámetro a
la ruta del router, que definirá usando
el decorador get. Así que adelante e importe
el paquete
común get degraded from nest yes slash. Y luego dentro de aquí
vamos a darle una ruta de post slash ID. Y luego dentro de la
lista de argumentos de este método, vamos a usar
otro decorador para extraer el ID de
la ruta del router. Este es el mayor
se denomina párr. Así que adelante e importar eso
también del mesial
es paquete común. Entonces dentro de él tenemos que nombrar a nuestro parlamento o en nuestro caso, nuestro parámetro tiene el nombre id Ahora, usaremos este
método para llamar
al método getline
en el servicio de blog. Así que adelante y devuelve
este servicio de bloque. Obtener uno y pasar en
el argumento ID. Esto recuperará la entrada de
blog deseada de la base de datos. A continuación, crearemos
el Get o router. Este método nos permitirá
recuperar todo perro oh, es de la base de datos. Primero crearemos, nuevamente un método asincrónico
con el nombre gets. Todos. Este método no
tomará ningún argumento ya que simplemente recuperará
todas las publicaciones de la base de datos, definirá la ruta
del enrutador usando el decorador get
seguido de la ruta. Finalmente, usaremos
este método para llamar
al método get desde
el servicio de bloque. Así que adelante y regresa 08. Este servicio de bloque, servicio que obtenga todo esto recuperará todas las
entradas de blog de la base de datos. Ahora, por último pero no menos importante, crearemos el router
intercalado. Este método nos
permitirá eliminar una sola entrada de blog
de la base de datos. Primero, crearemos un método
asíncrono y lo nombraremos, delete. Este método
tomará en un ID como argumento de tipo string. Este id se pasará
como un parámetro en la ruta del enrutador, que definirá usando el
eliminar el cráter en la parte superior. Importa y usa el decorador
Delete, seguido de la ruta delete large colon ID para obtener el ID
de la entrada de blog deseada. Y luego vamos
a usar el paran, cuanto mayor sea para extraer
el ID de la solicitud. Ahora, usaremos este
método para llamar
al método delete en
el servicio de blog. Así que regresa, espera este servicio de
bloque que elimine uno y pase
en el argumento ID. Esto eliminará la entrada de
blog deseada de la base de datos. Y con este método final, ya
hemos completado la clase de controladores de
sangre y todos sus enrutadores. Gran trabajo en seguir e implementar estas importantes
piezas de nuestro proyecto. Por cierto, el
argumento ID no es necesario para ser exactamente. Similar al nombre del parámetro? Sí, puede ser cualquier cosa
como, por ejemplo, ID de subrayado. Sí. Y aquí hay
que cambiar eso para subrayar ID. Pero el parámetro dentro de la ruta
del enrutador debe ser igual al parámetro al nombre
del parámetro dentro
del decorador del programa. De lo contrario, no podrá
obtener la identificación del paquete del
enrutador. Bien, ahora que hemos
terminado de crear todos los routers para
nuestro controlador de blog, es importante
pensar en el manejo de errores. Después de todo, las cosas pueden salir
mal en cualquier aplicación. Y es crucial manejar estas situaciones y de manera apropiada
y profesional. En SDS, tenemos varias
formas de manejar errores, incluyendo el uso de filtros de
excepción, vibraciones y guardias. En esta lección,
usaremos filtros de excepción para manejar errores en nuestro control
sanguíneo o métodos. Primero, vamos a probar la clase
de excepción
HTTP del paquete ***** yes,
coming. Entonces, en la excepción
HTTP de importación superior, esta clase nos permite lanzar una
excepción relacionada con http y enviar un código de estado específico y un mensaje de
error al cliente. A continuación, ejecutemos nuestro código
dentro de un bloque try catch y a través de una excepción HTTP
dentro de la trama guts, por ejemplo, dentro del método create. Podemos hacer algo
así. Inténtalo. Entonces aquí, atrapa. Y vamos a conseguir el error. Entonces toma esta línea y
ponla dentro del bloque try. Y en caso de que tengamos alguna otra que
vamos a usar o
vamos a lanzar una
nueva excepción HTTP. Y la clase de excepción HTTP tomará un argumento de mensaje. Entonces estos musters pueden ser cualquier cosa. Entonces en nuestro caso, no
sabemos qué salió mal
dentro de los servidores de registro. Crear ese método de creación. Entonces vamos a mandar algo así como algo cuando baúl. Y entonces tenemos que pasar
en otro argumento. Este argumento será
el código de estado HTTP. Y podemos obtener eso
de otra clase con un nombre http status. Se asegura de importarlo también. De una SDS vienen. Esta clase tiene
muchos otros tipos. Y el que
vamos a elegir aquí es el auto interno. Guarda esto para eliminar todos los errores de sí
, y como puedes ver, manejo de
errores en SES es mucho más simple que una aplicación
NodeJS pura. Podemos implementar
este mismo patrón en el resto de los métodos. Detectar los errores y enviar un mensaje de error y código de
estado adecuados al cliente. Al implementar el
manejo de errores de esta manera, nos aseguramos de que nuestra
aplicación
se comportará correctamente incluso en el caso de otras
brinden una mejor experiencia de usuario y mantengan nuestro código
organizado y profesional. Y ahora eso es todo
para este video. Ya hemos completado la clase de controlador de
blog y todos sus enrutadores encontrarán el resultado final de esta lección en video adjunta
a la sección de recursos. Así que adelante y descárgalo en caso de que algo saliera
mal en tu código. En el siguiente video,
vamos a probar nuestra aplicación utilizando
el software cartero. Entonces nos vemos ahí.
8. Poner a prueba el componente de blog: En esta lección, analizaremos nuestros componentes sanguíneos usando
el software Boltzmann. Antes de comenzar a probar,
asegurémonos de que estoy poniendo tanto el controlador
azul como el servicio de blog dentro de la aplicación modeló
el archivo ts para hacer eso. Primero abra App Model y luego dentro de la matriz de
controladores. Vamos a agregar el controlador de sangre. Por supuesto que hay
que importar eso del blog dot archivo
controller.js. Para el servicio. Vamos a poner eso dentro de la matriz
de proveedores. Así que adelante y escribe servicio de
blog e impórtalo también de
su archivo correspondiente. Ahora bien, esto es importante para garantizar que el
componente esté completamente integrado en nuestra aplicación y se pueda acceder
por correo postal. Ahora, antes de ejecutar
nuestra aplicación, tenemos que asegurarnos de importar
el archivo antes que todo lo demás. Así que adelante y pon esta línea como primer ítem de la matriz. Porque si no haces esto, obtendrás un error de base de datos. Bien, vamos a guardar
este archivo y cerrarlo. Entonces abre el lado de la terminal aquí y ejecuta el comando npm
run, empieza a llamar a diff. Bien, Como puedes ver
cómo se está
ejecutando una aplicación SES y esperando
conexiones en el puerto 3,000. Ahora abramos nuestros carteros y asegurémonos de crear
un nuevo espacio de trabajo. Y luego aquí dentro de
la sección de colección, haga clic en el botón Nuevo y
luego elija solicitud HTTP. Ahora vamos a comenzar a
probar el Create Router. Haz esto. Elijamos la
solicitud de publicación de esta lista. Aquí, vamos a pasar en la URL
http localhost, luego la ruta
del router del método create. Entonces el método grid existe
dentro del blog Create. Ahora en la sección body
de la solicitud, vamos a enviar
una carga útil JSON que represente la entrada de
blog que queremos crear. Haces eso, da clic en la fila. Y luego aquí, cambiar dx2, json. Y luego vamos a crear un objeto aquí y
pasar el título. Entonces el título va a ser
blogueado o blog de prueba. Y el contenido va
a ser contenido de prueba. Ahora, para enviar esta solicitud da
clic en el botón Enviar. Ahora, como puede ver, recibimos una respuesta
con un estado 200 y el objeto adyacente que representa la entrada de
blog recién creada con el id, el título y el contenido,
y el guion bajo. El subrayado V representa la
versión de este documento. Ahora vamos a usar el ID de
este documento de bloque
en los siguientes enrutadores. Entonces, sigamos adelante
y copiemos esta identificación. Y vamos a guardarlo como una variable de entorno
dentro de Postman. Así que da clic en la sección de
entornos. Y luego dentro de aquí, vamos a nombrar a este
blog subrayado ID. Y va a establecer el valor
al ID del documento del blog. Vamos a hacer clic en el botón Guardar para guardar esta variable de
entorno. Entonces volvamos aquí. Y vamos a
conseguir un router. Este enrutador recupera una
sola entrada de blog basada en su ID a este enrutador
enviará una solicitud get. Entonces cambiemos esto para conseguir. Y luego vamos
a enviar una solicitud a la ruta Blog, luego publicar. Y luego vamos
a enviar el ID que
acabamos de guardar como un
entorno global está dentro de Postman para
acceder a esa
variable de entorno a
llaves como esta. Después 2s bloquean subrayado ID. No necesitamos enviar ningún cuerpo. Así que adelante y elige ninguno aquí y luego envía la solicitud. Y aquí vamos, tenemos
nuestro documento de blog invitado. Ahora, sigamos adelante y
probemos el enrutador get all. Este router o recupera todas las entradas de blog
almacenadas en nuestra base de datos. Actualmente tenemos una entrada en el blog. Así que vamos a
obtener una matriz de un documento de blog
que tiene este enrutador. Asegúrate de tener el tipo de solicitud de
gato aquí. Y luego cambiar esta URL también. Blog, luego 0, envía la solicitud y deberías obtener una matriz de
un documento de blog. Pero como pueden ver aquí,
tengo múltiples documentos de blog porque lo he probado
antes de comenzar a grabar. Así que tengo múltiples publicaciones de
blog aquí. Pero como puede ver, también tenemos nuestro último documento de bloque, representado dentro de esta matriz. Entonces, en tu caso, ahí
solo obtendrás este documento de bloque. Ahora, finalmente, vamos
a probar el router de eliminación. Este enrutador o elimina una sola entrada de blog en
función de su ID. Entonces, cuando enviamos la solicitud, obtendría una matriz
de todos estos argumentos registrados. Y este documento de blog
no va a estar ahí. Se borrará. Para ti.
Obtendrá una matriz vacía. Sigamos adelante y probemos
ese blog y luego eliminemos. En. Agreguemos nuestro ID de blog, dos llaves y luego
seleccionemos ID de subrayado de bloque. Asegúrese de cambiar el tipo de
solicitud para eliminar. Vamos a mandar esto. Y aquí vamos. En realidad obtuvimos el documento de blog eliminado. Sí, no recibimos
sitio o aplicación. No devolvimos una
serie de documentos. Entonces aquí, el eliminar uno. Este método solo
devolverá el documento del blog y devolverá un nulo
si no encontró el documento
solicitado. Sí, volvamos
aquí y probemos de nuevo el enrutador
get all y verifiquemos si este documento de bloque fue
realmente eliminado o no. Vamos a mover esto. Y en cambio, llamemos a blog slash bowl y cambiemos su asqueroso para conseguir
que los ascendentes. Y como puede ver, el registro de pruebas no
es tan n dentro de esta matriz. Así que realmente se eliminó. Y por eso, hemos probado todos los enrutadores y
el controlador de blog usando el
software cartero enviando solicitudes
HTTP e inspeccionando las respuestas desde el servidor, podemos estar seguros de que nuestro componente está
funcionando como se esperaba. Así que por favor asegúrese de importar el controlador
y los servidores de bloque aquí. Y para poner este salto de columna vertebral o el archivo M como primer
elemento de la matriz. En el siguiente video,
vamos a empezar a trabajar en el componente de usuario. Entonces cilios.
9. Diseñar e implementar el esquema de usuarios: En esta siguiente lección, nos centraremos en
crear el esquema de usuario. El esquema de usuario
se utilizará para almacenar la información de
los usuarios registrados en nuestra aplicación. Para comenzar con on solo debes agregar la propiedad email como
una propiedad de esquema. Esto simplificará el proceso de firma de objetivo para nuestros usuarios. Ahora, quiero
desafiarte a que intentes construir el esquema de usuario por tu cuenta
antes de ver este video. Esto te ayudará a
entender el proceso de
creación de tu esquema y
la lógica detrás de él. Y luego después de que
lo hayas probado, cuál es el video para ver este proceso
paso a paso
y crear el esquema de usuario y asegúrate de
seguirlo para evitar errores. Ahora comencemos dentro
del esquema de puntos del usuario,
el archivo ts. Siga adelante y exporte una nueva
clase y asígnele el nombre del lado del usuario. Esta clase tendrá una
propiedad innata de tipo string. Ahora vamos a importar estos evaluadores
esquemáticos y
verterlo esquema de este paquete
yes Mongoose. Y luego colóquelo en la
parte superior de la clase de usuario. Así. Entonces para el correo electrónico amplio
necesita el prop, el evaluador. Así que adelante e importa eso y colóquelo en la parte superior de
la propiedad de correo electrónico. Esta propiedad
va a ser requerida. Así que adelante y agrega la propiedad requerida
dentro del decorador de prop. Y luego vamos a
exportar nuestro esquema de usuario. Hagámoslo en el botón. Crear un esquema de usuario con
nombre constante y establecerlo igual al esquema. Bacterias, se asegura de importar eso de esto sí, hongo. Luego usa el método create for class y pass en
la clase de usuario. Ahora el último paso es
explorar un
tipo de documento de usuario a partir de este archivo. Para ello, eso es tipo de exportación
y nombrarlo documento de usuario. Y luego usar el documento
hidratado y sacarlo
del paquete Mangoose. Vamos a utilizar este tipo para crear un
documento mangosta de tipo usuario. Ahora vamos a guardar este archivo
e ir al módulo app, el archivo ts aquí, y añadir nuestro modelo
Mongoose recién creado dentro del módulo mangosta punto para método
característica
dentro de esta matriz. Aquí, crea otro objeto, m más n, El nombre. Esta vez el nombre
va a ser extraído de la clase de usuario. Así que asegúrate de desplegar
eso desde el esquema de usuario y luego pasar el nombre. Y necesitamos que el esquema se va
a establecer en esquema de usuario. asegura de importarlo también desde el
esquema de punto del usuario, el archivo ts. Déjame guardar este archivo ahora. Y como puedes ver, no
hay
nada complicado en construir un
esquema de mangosta usando SDS. Esto lo hemos hecho en las lecciones anteriores y lo
hemos vuelto a hacer aquí. Espero que hayas tenido éxito en
la construcción del esquema de usuario por tu, oh, ahora eso es todo
para este video. Quiero que sea breve. Y en el siguiente
video vamos a
empezar a trabajar en
el servicio al usuario. El servicio de usuario solo
contendrá un método o create, pero vamos a tratar
con la autenticación usando tokens JWT o
JSON Web Tokens. Así que estén atentos y
nos vemos en la siguiente lección.
10. Creación de un servicio de usuario: En esta siguiente lección, nos sumergiremos en construir
el servicio de usuario se
centrará en crear solo
el método de creación a partir de ahora. Pero debes sentirte
confiado en tus habilidades para seguir construyendo los otros
métodos después de esta lección. Ahora para desafiarte a ti mismo, puedes intentar construir
el método de creación por tu cuenta antes de
ver el video. Al hacer esto, puedes
reforzar lo que has aprendido y aplicarlo
a un nuevo escenario. Y puedes ir más allá de
eso e intentar, al crear el método create, intentaste devolver un token
JWT al usuario. Esta será una gran
oportunidad para fortalecer su comprensión de la
creación de servicios y SCS. Así que prepárate para
arremangarte y sumérgete en
crear el servicio al usuario. Vamos a empezar por crear nuestro constructor dentro del servicio
al usuario. En su interior, vamos a
inyectar el modelo de usuario. Entonces para hacer eso, primero, vamos a crear una
variable privada y nombrarla
modelo de usuario y darle el
tipo de modelo importado del paquete Mongoose y
pasemos en el documento de usuario como pestaña de documento de
Mangoose para eso también del esquema de
punto de usuario, el archivo ts. Ahora bien, definir el modelo de
usuario así no significa que
lo hayamos inyectado dentro de nuestro servicio de usuario. Entonces para hacer eso, usaremos el decorador y
verificaremos Moodle. Importar eso de los
nazis rozan Mangosta. Este decorador
aceptará el nombre del modelo. Podemos obtenerlo desde el nombre de
la clase de usuario. Asegúrese de importar
la clase
de usuario desde el
esquema de apariencia de usuario, el archivo ts. Ahora por esto, hemos
inyectado con éxito el modelo de usuario
dentro de nuestro servicio de usuario. Ahora podemos usarlo dentro
del método create. Entonces va a ser un
método asincrónico con el nombre create. Y este método aceptará un correo electrónico de tipo
string como argumento. Y dentro de eso
vamos a crear una nueva instancia
del documento de usuario. Para ello, usaremos la palabra clave
new y luego usaremos la clase UserModel en la que la
hemos inyectado dentro que usará su
servicio para crear una nueva instancia
de documento de usuario pasando un objeto
con la propiedad email. Ahora, vamos a guardar nuestro documento de usuario
usando el método save. Pero esta vez
vamos a mantener el documento seguro dentro de un usuario guardado con nombre
constante. Entonces, oh, espera, por
estos métodos seguros. Ahora bien, la razón por la que
creé esta
constante de usuario guardada aquí es porque vamos a usar los datos del documento de
usuario para generar un JSON Web Token y guardar los
datos del usuario dentro de él, y luego enviarlos de
vuelta al cliente. Entonces, en la siguiente línea, devolveremos un objeto
con la propiedad Jason o token JWT. Esta propiedad contendrá
la cadena de token web JSON. Ahora, para hacer eso, para generar el token
web JSON habrá que
entender qué es un
JSON Web Token. En pocas palabras, un token
web JSON es una forma transmitir
información de
forma segura entre las partes como objeto adyacente. En este caso, la
información sería un token de autenticación
que identifica al usuario. Después de que un usuario
inicie sesión en nuestra aplicación, devolveremos un objeto
que contiene el token JWT. Ahora este token se
utilizará para autorizar
al usuario a acceder a rutas
protegidas. Pero por ahora, centrémonos en generar el token JWT real. Y para eso, necesitamos
instalar algunas dependencias nuevas. Así que abre tu terminal. Aquí. Ejecutemos el comando PMPM. Eso sí ahorra. Entonces agregue ness G, S más T W T. Este paquete es un paquete
utilitario que nos
ayuda con la manipulación de GW t. El segundo paquete
van a ser los paquetes de pasaporte JWT. Ahora bien, este cubo es
el paquete de pasaporte que implementa
la estrategia JWT. Vamos a usarlo cuando empecemos a proteger nuestras rutas, usando guardias de autenticación para evitar que
usuarios no autorizados usen nuestro PR. Ahora, ejecuta este comando
y deberías tener estas dos dependencias instaladas
dentro de tu aplicación. Y después de eso,
hay que instalar los tipos de TypeScript del
paquete pasaporte hace JWT, y se asegura de
instalarlos como una dependencia dev, usando el escritorio se ha
guardado como etiqueta div, y luego agregar tipos, pasaporte, eso es T W T. Y pulsa enter y completa el proceso de
instalación. Una vez que tengas
instaladas estas dependencias dentro de
tu aplicación, sigue
adelante y abre
el módulo app, el archivo ts a un lado aquí, y vamos a importar nuestro módulo JWT para
que pueda ser usado en toda
nuestra aplicación. Para hacer eso, primero
importaremos el módulo JWT de los paquetes en
Nest GS slash JWT. Y luego dentro de
la encuesta de importación, vamos a usar
el módulo JWT. Después resistor. Aquí, vamos a pasar en un objeto con algunas
configuraciones. Ahora, la primera propiedad dentro este objeto de configuración
va a ser el secreto. Aquí guardaremos nuestro token secreto
JWT. Ahora el token secreto
se usa para descifrar el token JWT y extraer
los datos del usuario de él. Entonces, el token secreto JWT juega un papel crucial en el proceso de
autenticación. Entonces tenemos que guardar ese
token dentro del archivo m. Así que adelante y abre eso. Y encontrarás un secreto de
subrayado JWT valioso. Puedes poner aquí cualquier carácter
aleatorio. Y luego guardar este archivo. Regresa aquí. Y vamos a
usar esa variable de entorno del
proceso que objeto, luego punto DWT bajo
subrayado secreta. El segundo inmueble van
a ser las subastas de letreros. Esta propiedad será un objeto con algunas otras propiedades de
configuraciones. Una de estas propiedades es
la caduca en propiedad. Esto definirá el
periodo de tiempo en el
que será válido el
token web JSON. O en otras palabras, definir el periodo de tiempo en el
que el usuario será autenticado en nuestra
aplicación y cuándo deberá volver a iniciar sesión para obtener
un nuevo JSON Web Token. Entonces vamos a fijar
esto a dos días. Después guarda el módulo de app
y ciérralo, y ciérrelo. Aparte aquí
vamos a generar el token web JSON usando la superficie JWT que viene de la biblioteca DWT de SES slash. Primero, es importante
en la parte superior de nuestro archivo. Y dentro del constructor
del servicio de usuario, vamos a crear una nueva variable, nombre y servicio GW t y
establecer su tipo en servicio JWT. Ahora regrese a nuestro JWT y
propiedad y usemos ese servicio para firmar un nuevo token web JSON con
los datos de seguridad del usuario. Entonces el mismo método
va a aceptar una carga útil que pueda contener cualquier
propiedad que desee guardar sobre el usuario
dentro del token web JSON. Entonces en nuestro caso, queremos guardar el ID de usuario. Podemos obtener eso a partir de la constante de
usuario guardada , ese ID de
subrayado. Y debido a que el
id del guion bajo es de tipo Mongoose ID, tenemos que cambiarlo a una cadena usando el método
toString. Ahora la siguiente propiedad que
quería guardar es el correo electrónico. Puede obtenerlo también
de los usuarios guardados o del usuario de seguridad constante punto n. Con esta pieza final, hemos
terminado con éxito nuestro servicio al usuario. En el siguiente video,
vamos a construir nuestro controlador de usuario y
crear el Create Router. Entonces nos vemos ahí.
11. Creación de un controlador de usuario: Bienvenido a este video donde
nos enfocaremos en construir el controlador de usuario
en nuestra aplicación SES. En las lecciones anteriores, hemos creado el
esquema de usuario y el servicio de usuario, que ahora
servirán base para
el controlador de usuario. El controlador de usuario
se encargaría de manejar las solicitudes HTTP
entrantes
y
dirigirlas al método de
servicio adecuado para su procesamiento. Ahora, solo empieza, agregaremos el usuario string dentro
del control o decorador. Esto nos permitirá
crear un punto final específico
para el controlador de usuario. Al usar el decorador de
controladores, estamos definiendo la ruta base
para nuestro controlador de usuario, lo que nos
permitirá administrar
y organizar fácilmente nuestros endpoints API. Ahora, agreguemos la variable de servicio de usuario
dentro del constructor. Así que sigue adelante y crea una variable privada y
asímbrala Servicio de Usuario, y establece su tipo en clase de servicio de
usuario. Entonces vamos a crear un método asíncrono,
nómbralo crear. Este método
aceptará una solicitud de correo. Así que adelante e importa y usa el decorador de post en la parte superior de nuestro método create y dentro de él, dale el path create. Ahora bien este método o este router
va a aceptar un cuerpo. Y podemos extraer el cuerpo
usando el cuerpo cuanto mayor. Así que adelante e
impórtelo también del nido sí, paquete
común. Y definamos
nuestro argumento corporal. Entonces nuestro argumento body
va a ser un objeto que contiene una
propiedad email de tipo string. Ahora aquí vamos a
devolver 08, este servicio de usuario. Y vamos a usar
el método create dentro del servicio de usuario para crear
un nuevo documento de usuario, guardarlo en la base de datos,
y luego regresar. El token JWT
irá a Bus en el correo electrónico
que está dentro del cuerpo. Y con esto, hemos creado
con éxito el controlador de usuario
y el Create Router. Por lo que el usuario
podrá crear una nueva cuenta usando
el punto final create. Y luego
vamos a enviar de vuelta un token JWT para autorizarlo. Con solo enviar el token
JWT no significa que nuestra
aplicación esté completamente protegida contra el uso malicioso. Es importante
recordar que es
necesario dar más pasos para asegurar nuestra aplicación. Dicho esto,
en el próximo video, estaremos explorando cómo
podemos proteger nuestro controlador de blog de usuarios no autorizados
usando un JWT of God, que actúa como un middleware de
autenticación. Con esta implementación,
podemos garantizar que solo los usuarios autorizados puedan acceder a nuestros endpoints y proteger nuestra aplicación
de uso malicioso. Así que mantengamos este video corto y nos vemos
en el siguiente.
12. Implementación de autenticación con Auth Guards: En esta lección, vamos a aprender
a implementar la estrategia JWT
y honesto sí, obligación y proteger a
nuestro controlador de usuario
no autorizado está
utilizando un JWT off guard. Pero antes de sumergirnos en
la implementación, hagamos una
introducción rápida en
tarjetas en SES con respecto a ITS y contextos de
ejecución que se
agregue como middleware y verifique si una solicitud está autorizada para acceder a un punto final
en particular. Entonces usando este jardín, podremos verificar el,
si el token JWT es válido o no y extraer la carga útil del
usuario de él. Ahora que tenemos un
conocimiento básico de las tarjetas JWT, necesitamos comenzar
instalando una nueva dependencia. Así que adelante y abre tu
terminal y ejecuta el comando PMPM, salva vidas, pasaporte. Este es un
paquete muy importante ya que se
encargará de extraer el token JWT
del encabezado y decodificar. Y luego si solo tiene fecha
y nos proporciona
los datos que se
guardaron en su interior. Una vez que haya terminado de instalar
el paquete de pasaporte, continúe y cierre
la terminal y luego asegúrese de descargar el punto
de inicio de este proyecto que se adjunta a la sección
de
recursos de este video en su sistema. Y luego dentro de la
carpeta Tierra encontrarás dos archivos. En este momento,
vamos a trabajar en la estrategia GWP, el archivo ts. Aquí vamos a
exportar una clase con
un nombre de estrategia JWT. Y esta clase va
a ser inyectable. Y cómo podemos
hacerlo inyectable, claro, con el decorador
inyectable. Así que adelante y agrega la W, esta clase o el decorador
inyectable e importado de un comentario de
SES slash. Entonces esta clase extenderá
la estrategia de pasaporte de clase. Como dije, temprano, paquete de contraseñas
tempranas se encargará de
extraer el token JWT
del encabezado y decodificarlo,
para extraer el token JWT
del encabezado y decodificarlo, luego proporcionarnos los datos que fueron decodificados
del token JWT. Ahora bien, esta clase, va a aceptar otra clase de utilidad
con la estrategia de nombre. Podemos importar eso
desde passport dash d, t. ahora sigamos adelante y creamos el constructor de esta clase. Y dentro de las llaves rizadas, vamos a usar
el súper método. Ahora, el súper método
se utiliza para llamar
al constructor de
la clase padre. Súper matutino dentro del
constructor de la subclase, que es la estrategia JWT, estamos permitiendo que herede las propiedades y métodos
de la clase padre, que es la estrategia de pasaporte. Esto ayuda a crear un código
más organizado y
mantenible. Cada vez que extiendes
otra clase, tienes que usar el
método super para asegurarte de que tu subclase está heredando todas las propiedades y métodos
de la clase padre. Entonces este método
aceptará y objetará, y este objeto
entrará en agregar algunas propiedades. La primera propiedad
es la solicitud de JWT. Esta propiedad le dirá a
la clase de contraseña cómo puede extraer el
token JWT de la solicitud. Queremos extraer el token del encabezado como una
barrera o un token. Para ello, vamos a usar otra clase con
el nombre extract JWT importado de la
contraseña dash g, DWT. Entonces esta clase
nos proporciona un método con el nombre de header
como token de barrera. Con este método,
nuestra clase Esports, que va a
extraer el token
del encabezado como un token de barrera. Ahora el segundo argumento
va a ser ignorar la exploración
y ponerla en falso. Estamos convirtiendo la mejor clase
de tablero para no ignorar el token caducado. Entonces, si el usuario envió un
token caducado a la API rechazará su solicitud y devolverá
una botella una respuesta. Por lo que no autorizado
solicitan respuesta. Ahora la última propiedad
va a ser propiedad
secreta o clave. Esta propiedad mantendrá secreto
el token JWT para que los titulares de pasaportes puedan
decodificar el token JWT. Lo guardamos dentro del
archivo como una variable de entrada. Por lo general, procesa ese objetivo
para importar el secreto JWT. Y luego terminamos de
configurar nuestras configuraciones de pasaporte. Ahora podemos seguir adelante y crear un método dentro de la clase de estrategia
GW. Este método va a ser N N método sincrónico
con el nombre cuerpo fecha. Este método aceptará una carga útil y todo lo
que tenemos que hacer es haber
visto la carga útil
al siguiente enrutador simplemente
devolviendo la
carga útil de este método. Ahora podemos poner el tipo
de carga útil va. Ya conocemos la forma de
esta carga útil porque hemos guardado la carga útil dentro
del token JWT con
dos propiedades, el ID de usuario y el correo electrónico. Y ambos
son de tipo string. Así que agreguemos dos puntos
y un objeto con propiedad user id de tipo string
y email de tipo string. Ahora la clase passport, construimos un objeto de usuario
basado en el valor de retorno del método validate y
lo adjuntamos como una propiedad en
el objeto request. Entonces, para pasar de esto, sigamos adelante y abramos el
JWT Asgard, el archivo ts. Y aquí vamos
a construir nuestro DWT. Entonces este Guardias va
a ser un GWP de clase de Dios. Y esta clase va a
ser una clase inyectable. Ellos seguirán adelante y usarán
el decorador inyectable. Y vamos a extender otra clase con
el nombre de Dios. Puedes importarlo desde paquetes de pasaporte
SES plus. Esta clase de guardia,
va a aceptar el tipo de estrategia de
autenticación. En nuestro caso, estamos
usando la estrategia JWT. Así que adelante y escribe DWT dentro la Tierra y luego guarda
este archivo, ciérralo. Aquellos la estrategia GW, el archivo ts, vuelven a
nuestro componente de bloque. Y vamos a implementar el método start to the create. Así que vamos a evitar que usuarios
no autorizados creen entradas
de
blog dentro de nuestras relaciones públicas. Entonces para hacer eso, usemos
el calibreador que descartes, que se importará
del nido zs paquetes menos comunes. Y entonces aquí vamos a
usar el desprevenido JWT que hemos creado
dentro de los oficiales DWT que vi esa
tarjeta, el archivo ts. Entonces vamos a guardar esto y luego
vamos al módulo de app. Y aquí tenemos que importar nuestra clase de estrategia JWT dentro la matriz de proveedores
para que pueda ser accesible en toda
nuestra aplicación. Así que sigue adelante y agrega otro
ítem y escribe la estrategia JWT. asegura de importar eso
de diapositivas JWT estrategia de puntos
y por qué estamos aquí, vamos a importar el
controlador de usuario también. La matriz de controladores
y el servicio de usuario. Y decir que el proveedor es Eddie. Bien, volvamos
al controlador del blog. Y al implementar el
off-guard, así, estamos protegiendo
el Create Router de usuarios no autorizados. Ahora podemos agregar una capa extra a nuestra autenticación
agregando una propiedad de usuario dentro del
esquema de bloques para que podamos saber qué usuario ha
creado el documento de blog. Entonces podemos decir el esquema de usuario, agreguemos otra sonda
y hagamos que se requiera. Y nombra este usuario de propiedad. Ahora esta propiedad va
a ser de tipo user class. Asegúrese de importar eso
desde el archivo de esquema de usuario. Y también esta propiedad
va a ser una referencia
al documento del usuario. Ahora para hacer eso, este objeto, vamos a agregar
la propiedad type y establecerla en Mangoose. Asegúrese de importar el paquete Mongoose
de mangosta y luego seleccione tipos de esquema ID de objeto. Porque queremos referirnos
al usuario por su ID y luego agregar la propiedad href para establecer la referencia de este
producto al modelo de usuario. Después guarda el esquema del blog, ciérrelo y vuelve
al controlador de flujo. Y dentro del método create, vamos a extraer el
objeto user de la solicitud. Se puede hacer eso dentro de la lista de
argumentos
del método create. Y al usar el decorador reg, asegúrese de importarlo desde
el paquete común de SES. Ahora este decorador nos
va a dar acceso a la solicitud y vamos a tomar el objeto de
usuario de ahí. Entonces, dentro del método create
del servicio de blog, agreguemos un, especialmente en un objeto
y el objeto aquí. Y agregar una propiedad de usuario
proveniente del usuario de solicitud. Y luego agrega un signo de
interrogación ahí porque el objeto de usuario
puede estar indefinido. A continuación, seleccione el ID de usuario. Ahora tenemos que ir a
los servidores de bloque. Y dentro del
método create aquí están dentro la interfaz Creative Blog DTO. Tenemos que agregar una
propiedad de ID de usuario de tipo string. Guarda los creados
PARA volver aquí. Y cuando salvamos, todas las flechas deberían desaparecer. Justo aquí. Tenemos que cambiar
esto a ID de usuario. Ahora dentro de los otros
enrutadores, como la actualización, podemos realizar una operación
para verificar si el usuario dentro del documento de bloque solicitado tiene el
mismo ID de usuario que el
ID de usuario extraído del token JWT. Podemos hacer lo mismo dentro
del router delete one aquí. Voy a dejar eso
como un reto para que practiques tu nido sí. Balanzas. No debería ser tan difícil. Solo necesitas leer el documento del blog de la
base de datos, el prop del usuario, y verificar si es igual al ID de usuario
extraído del token. Si es así, devuelva
el documento del blog o permita la acción de actualización en
el documento de bloque solicitado. Entonces con esto, hemos
terminado de crear nuestro controlador de blog e implementar la aplicación de autenticación de
adentro hacia afuera. Encontrarás el resultado final adjunto a esta sección de
recursos de video.