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
Author
6 person written this
derlys
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
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.

mongodb Article's
30 articles in total
Favicon
🌐 Building Golang RESTful API with Gin, MongoDB 🌱
Favicon
Construindo uma API segura e eficiente com @fastify/jwt e @fastify/mongodb
Favicon
Making a Todo API with FastAPI and MongoDB
Favicon
How to Create and Consume a REST API in Next.js
Favicon
Crudify: Automate Your Mongoose CRUD Operations in NestJS
Favicon
Utilizando la librería Mongoose
Favicon
Full Stack Development (Mern && Flutter)
Favicon
Node.js Meets PostgreSQL and MongoDB in Docker: Docker Diaries
Favicon
Comprendre le Design Pattern MVC avec Node.js, Express et MongoDB
Favicon
Set up MongoDB primary and secondary with Docker.
Favicon
The Intricacies of MongoDB Aggregation Pipeline: Challenges and Insights from Implementing It with Go
Favicon
Test Post
Favicon
Containerizing a MERN Stack Application!
Favicon
MongoDB vs. Couchbase: Comparing Mobile Database Features
Favicon
6 Steps to Set Up MongoDB Atlas for Node.js Applications
Favicon
MongoDB: How to setup replica sets
Favicon
To Dockerize a Node.js and MongoDB CRUD app
Favicon
Day 39: Deploying Stateful Applications with StatefulSets (MongoDB)
Favicon
Do you think schema flexibility justifies using NoSQL? Think twice.
Favicon
HadiDB: A Lightweight, Horizontally Scalable Database in Python
Favicon
A Simple Guide for Choosing the Right Database
Favicon
Integrating MongoDB Atlas Alerts with Lark Custom Bot via AWS Lambda
Favicon
🔍 MongoDB Data Modeling: Embedding vs. Referencing - A Strategic Choice!
Favicon
Unique Index on NULL Values in SQL & NoSQL
Favicon
Embedding vs. Referencing - A Strategic Choice!
Favicon
Series de tiempo en MongoDB
Favicon
I want to write a code for POS sales output interface - and import to mongoDb for sale analysis- however is POS agnostic interface, should work with all POS
Favicon
Hello,help review my fullstack website stack : nestjs,mongodb and reactjs. https://events-org-siiv.vercel.app/
Favicon
Implementing an Express-based REST API in TypeScript with MongoDB, JWT-based Authentication, and RBAC
Favicon
It's a Security Thing.

Featured ones: