DEV Community

Cover image for Utilizando la librería Mongoose
Derlys
Derlys

Posted on

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
Enter fullscreen mode Exit fullscreen mode

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'),
  },
];
Enter fullscreen mode Exit fullscreen mode
  • 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,
});
Enter fullscreen mode Exit fullscreen mode

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'],
  },
];
Enter fullscreen mode Exit fullscreen mode

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();
  }
}
Enter fullscreen mode Exit fullscreen mode

📝 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 {}
Enter fullscreen mode Exit fullscreen mode

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.

Top comments (0)