igual otra forma de conectarse a mongo es usando el modulo @nestjs/mongoose aqui dejo la documentacion muy buena por cierto https://docs.nestjs.com/techniques/mongodb
Introducción
Persistencia de Datos con MongoDB y NestJS
Programación en Python para Principiantes
Persistencia de Datos en MongoDB con Node.js
Database
Configuración de Docker Compose para MongoDB
Conexión a MongoDB usando Mongo Compass en Docker
Conexión a MongoDB con NodeJS: Instalación y Configuración Básica
Inyección de Conexiones MongoDB en NestJS
Consultas Avanzadas con MongoDB y NestJS
Conexión a MongoDB con Variables de Entorno en Node.js
Mongoose
Instalación y Configuración de Mongoose con NestJS
Creación de Esquemas de Productos con Mongoose y NestJS
Operaciones CRUD con Mongoose y Node.js
CRUD de Productos con Mongo y Nest.js
Paginación de Datos en NestJS: Implementación Práctica
Paginación y Filtros en MongoDB con Node.js
Consultas Avanzadas con Rango de Precios en MongoDB
Indexación en MongoDB: Selección y Creación de Índices Eficientes
Relaciones en MongoDB
Relaciones Embebidas en MongoDB: Documentos Anidados y Validación
Relaciones Uno a Uno en MongoDB: Referencias y Subdocumentos
Relaciones Uno a Muchos en MongoDB: Arrays Embebidos y Referenciados
Tipado de Documentos Embebidos en NestJS con Mongoose
Relaciones uno a muchos en MongoDB: Arrays y Referencias
Manipulación de Arrays en Servicios Web con Node.js
Próximos pasos
Autentificación con MongoDB y Passport en NestJS
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Veamos una forma de realizar la conexión a una base de datos MongoDB con el driver oficial.
Conectarse a una base de datos es un procedimiento asíncrono. Este puede ejecutarse de manera global al inicializar el proyecto NestJS y, posteriormente, gracias a las características de NestJS, inyectar la conexión en cualquier servicio para hacer consultas.
Creamos un módulo al que denominaremos DatabaseModule, que contiene la configuración de forma global para establecer la conexión a una base de datos, a la vez que inyecta un servicio denominado “MONGO”. Este puede ser utilizado por cualquier otro servicio que requiere la conexión.
// src/database/database.module.ts
import { MongoClient } from 'mongodb';
@Global()
@Module({
providers: [
{
provide: 'MONGO',
useFactory: async () => {
const uri =
'mongodb://mongo:secret@localhost:27017/nestjs_mongo?authSource=admin';
const client = new MongoClient(uri);
await client.connect();
const database = client.db('platzi-store');
return database;
},
},
],
exports: ['API_KEY', 'MONGO'],
})
export class DatabaseModule {}
Inyectamos el servicio que lleva el nombre de “MONGO” en cualquier otro servicio que requiere su utilización.
// src/app.service.ts
import { Db } from 'mongodb';
@Injectable()
export class AppService {
constructor(@Inject('MONGO') private database: Db,) {}
}
De esta manera, solo usando el driver oficial de MongoDB, puedes crear un servicio reutilizable para establecer la conexión a tu base de datos.
Contribución creada por: Kevin Fiorentino.
// src/database/database.module.ts
import { MongoClient } from 'mongodb'; // 👈 Import MongoClient
@Global()
@Module({
providers: [
...
{
provide: 'MONGO',
useFactory: async () => { // 👈 Inject w/ useFactory
const uri =
'mongodb://root:root@localhost:27017/?authSource=admin&readPreference=primary';
const client = new MongoClient(uri);
await client.connect();
const database = client.db('platzi-store');
return database;
},
},
],
exports: ['API_KEY', 'MONGO'], // 👈 add in exports
})
// src/app.service.ts
import { Injectable, Inject } from '@nestjs/common';
import { Db } from 'mongodb'; // 👈 Import DB Type
@Injectable()
export class AppService {
constructor(
// @Inject('API_KEY') private apiKey: string,
@Inject('TASKS') private tasks: any[],
@Inject('MONGO') private database: Db,
@Inject(config.KEY) private configService: ConfigType<typeof config>,
) {}
getHello(): string {
const apiKey = this.configService.apiKey;
const name = this.configService.database.name;
return `Hello World! ${apiKey} ${name}`;
}
getTasks() { } // 👈 Create new method
}
Aportes 4
Preguntas 2
igual otra forma de conectarse a mongo es usando el modulo @nestjs/mongoose aqui dejo la documentacion muy buena por cierto https://docs.nestjs.com/techniques/mongodb
El Patron Singleton, es diferent de los pricipios SOLID
Este curso está buenísimo!
👏
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?