Logo

dev-resources.site

for different kinds of informations.

Utilizando la librería Mongoose

Published at
1/8/2025
Categories
mongodb
nestjs
tutorial
developer
Author
Derlys
Categories
4 categories in total
mongodb
open
nestjs
open
tutorial
open
developer
open
Utilizando la librería Mongoose

Si ya tienes una base de datos creada en nestjs este tutorial es para ti con tan solo 6 simples pasos tienes la conexión a Mongo que necesitas.

Si te gustaría seguir un tutorial desde cero donde creemos los mudulos y esquemas antes de la conexión te recomiento este

En este tutorial crearemos un DatabaseModule que se basa en el paquete Mongoose

Paso 1

Instala la librería de Mongoose

 npm install --save mongoose

Paso 2

Establece la conexión con tu base de datos utilizando la función connect () esta función te devuelve una promesa, por eso debes generar un proveedor asíncrono.

  • Crea un archivo llamado database.provider.ts y escribe este código
import * as mongoose from 'mongoose';

export const databaseProviders = [
  {
    provide: 'DATABASE_CONNECTION',
    useFactory: (): Promise<typeof mongoose> =>
      mongoose.connect('mongodb://localhost/nest'),
  },
];
  • exporta el archivo anterior para que sea accesible al resto de la app, haz esto en el archivo database.module.ts

Paso 3

Inyecta el objeto Connection usando el decorador @Inject() y, ya que en Mongo todo es un derivado de un esquema, defínelo en tu esquema, en este caso cat.schema.ts y quedaría así:


import * as mongoose from 'mongoose';

export const CatSchema = new mongoose.Schema({
  name: String,
  age: Number,
  breed: String,
});

Paso 4

El CatsSchema pertenece a una carpeta llamada cats y este representa al CatsModule ahora crea un modelo provider genere un archivo llamado cats.provider.ts

import { CatSchema } from './schemas/cat.schema';

export const catsProviders = [
  {
    provide: 'CAT_MODEL',
    useFactory: (connection) => connection.model('Cat', CatSchema),
    inject: ['DATABASE_CONNECTION'],
  },
];

Paso 5

En el archivo cats.service.ts usa el modelo en el servicio, inyectándolo con el decorador @inject().


import { Injectable, Dependencies } from '@nestjs/common';

@Injectable()
@Dependencies('CAT_MODEL')
export class CatsService {
  constructor(catModel) {
    this.catModel = catModel;
  }

  async create(createCatDto) {
    const createdCat = new this.catModel(createCatDto);
    return createdCat.save();
  }

  async findAll() {
    return this.catModel.find().exec();
  }
}

📝 Nota: Tu puedes crear una interfaz de Cat y de esa manera extender el Document desde el paquete Mongoose

Paso 6

Por último, en el archivo cats.module.ts importa el CatsProvider y el CatsService así:


import { Module } from '@nestjs/common';
import { CatsController } from './cats.controller';
import { CatsService } from './cats.service';
import { catsProviders } from './cats.providers';
import { DatabaseModule } from '../database/database.module';

@Module({
  imports: [DatabaseModule],
  controllers: [CatsController],
  providers: [
    CatsService,
    ...catsProviders,
  ],
})
export class CatsModule {}

Y así puedes usar esta librería que es superútil al momento de conectar tu base de datos. Yo aprendí a usar mongo recientemente y junto con nestjs son buenos aliados para hacer una conexión rápida y sencilla.

Únete a la comunidad de mododificildevs y aprendamos juntos.

Featured ones: