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 elDocument
desde el paqueteMongoose
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.
Top comments (0)