MongoDB es una base de datos NoSQL sin esquema con estructuras de documentos flexibles, a diferencia de las bases de datos SQL. El uso de MongoDB como base de datos brinda muchos beneficios, desde un fácil escalado hasta características modernas de bases de datos, como transacciones.
MongoDB también admite bibliotecas de modelado de datos de objetos (ODM) como Mongoose. Los ODM administran relaciones de datos, validan esquemas y convierten objetos en modelos de datos. Facilitan la interacción con una base de datos MongoDB.
En unos pocos pasos, aprenderá a usar MongoDB en una aplicación NestJS con el paquete mongoose de NestJS dedicado.
Paso 1: Instalación de dependencias
Antes de usar Mongoose en su aplicación NestJS, debe instalarla junto con su paquete NestJS nativo.
Instale mongoose y su paquete NestJS nativo usando el administrador de paquetes npm mediante la ejecución:
instalar npm @nestjs/mangosta mangosta
Paso 2: Conexión a MongoDB
Cuando finalice la instalación, vaya a su aplicación.módulo.ts expediente. Luego importa MongooseModule de @nido/mangosta:
importar { Módulo Mongoose } de '@nestjs/mangosta';
A continuación, en su matriz de importaciones, llame al para raíz método en MongooseModule y pase su MongoDB URI como argumento:
importaciones: [MongooseModule.forRoot (proceso.env. MONGODB_URI)],
los para raíz El método comparte la conexión de la base de datos a través de todos los módulos de su aplicación. Toma un objeto de configuración opcional; puedes aprender más sobre esto en mangosta Documentación de opciones.
Paso 3: crear un esquema de mangosta
Un esquema es un objeto JSON que define la estructura y el contenido de sus datos. Deberá crear uno para definir cómo Mongoose almacena sus datos en la base de datos MongoDB.
En el módulo raíz de su aplicación, cree un "esquemas” carpeta. Esta carpeta es donde almacenará todos sus archivos de esquema.
dentro de tu esquemas carpeta, cree un archivo de esquema y asígnele un nombre usando la convención de nomenclatura de NestJS (
A continuación, agregue las siguientes importaciones a su archivo de esquema:
importar { Objeto, Esquema, SchemaFactory } de "@nestjs/mangosta";
importar { Documento } de "mangosta";
los Apuntalar el decorador marca las propiedades que anota como una propiedad en su base de datos MongoDB.
los Esquema decorador marca la clase que anota como un esquema.
los fábrica de esquemas La clase contiene métodos estáticos utilizados para la creación de modelos.
la mangosta Documento representa una asignación uno a uno a los documentos almacenados en MongoDB. Lo necesitará como una anotación de tipo.
Después, crear una clase, anótelo con el Esquema decorador para marcarlo como un esquema Mongoose y exportarlo:
@Esquema()
exportarclaseManifestación{}
A continuación, cree y exporte un tipo de unión con su clase y Documento:
exportarescribe DemoDocument = Demostración y Documento;
Luego agregue sus propiedades deseadas a la clase y anótelas con el Apuntalar decorador. Puede pasar un objeto de configuración opcional al Apuntalar decorador y configure la propiedad como se requiere:
@Esquema()
exportarclaseManifestación{
@Apuntalar({ requerido: verdadero })
propiedad_1: cadena;
}
los Mangosta la documentación cubre el objeto de configuración con más detalle.
Finalmente, cree y exporte un modelo Mongoose a través del fábrica de esquemas's crear para la clase y pasa tu clase como argumento:
exportarconstante DemoSchema = SchemaFactory.createForClass (Demostración);
Su esquema completo debería verse así:
importar { Objeto, Esquema, SchemaFactory } de '@nestjs/mangosta';
importar { Documento } de 'mangosta';exportarescribe DemoDocument = Demostración y Documento;
@Esquema()
exportarclaseManifestación{
@Apuntalar({ requerido: verdadero })
propiedad_1: cadena;@Apuntalar({ requerido: verdadero })
propiedad_2: número;@Apuntalar()
propiedad_3: cadena;@Apuntalar({ requerido: verdadero })
propiedad_4: booleano;
}
exportarconstante DemoSchema = SchemaFactory.createForClass (Demostración);
Paso 4: Registrar el Esquema
Navegue a la carpeta de su módulo y agregue las siguientes importaciones:
importar { Módulo Mongoose } de '@nestjs/mangosta';
importar { Demostración, esquema de demostración } de '../esquemas/demo.esquema';
A continuación, cree un “importacionesmatriz ” dentro de la @módulo decorador. Luego, dentro de la matriz, llame al paraCaracterística método en MongooseModule.
los paraCaracterística El método toma una matriz de modelos Mongoose. Pasar un objeto de configuración con un nombre propiedad establecida en el nombre de su clase de esquema, y una esquema propiedad establecida en su esquema creado:
MongooseModule.para función([{ nombre: Demo.name, esquema: DemoSchema }]),
Paso 5: Inyectar el modelo Mongoose
A continuación, deberá inyectar el modelo Mongoose para habilitar la consulta de su base de datos llamando a los métodos Mongoose en el modelo.
Navegue a la clase de servicio de su módulo y agregue las siguientes importaciones:
importar { Modelo } de 'mangosta';
importar { Inyectar modelo } de '@nestjs/mangosta';
importar { Demostración, Documento de demostración } de '../esquemas/demo.esquema';
Utilizar el Modelo interface como una definición de tipo para su modelo, dándole acceso a los métodos Mongoose.
los InyectarModelo decorador inyecta el modelo Mongoose en el constructor de su clase de servicio.
A continuación, cree un constructor dentro de su clase de servicio. debería tomar un privado variable como argumento, una Modelo con un tipo genérico de Documento de demostración. Anote su variable privada con el InyectarModelo decorador y pase el nombre de su clase de esquema como argumento:
@Inyectable()
exportarclaseServicio de demostración{
constructor(
@InyectarModelo(Demo.nombre)
demo privadaModelo: Modelo<Documento de demostración>,
) {}
}
Puede consultar su base de datos MongoDB llamando a los métodos Mongoose en su variable privada (modelo de demostración).
Ventajas de usar MongoDB
Además de su sólida comunidad en línea y su facilidad de uso, MongoDB brinda alta disponibilidad y estabilidad de datos. Ofrece análisis acelerados, agregación de datos y más, lo que la convierte en la base de datos ideal para sus proyectos.