Workshop Fullstack Javascript
  • Bienvenid@s 👨🏼‍💻👩🏻‍💻
  • Prerequisitos 💻🔧
  • Backend
    • Introducción
      • Configuración Inicial
    • Node.js
    • Express.js
      • Configuración
      • Carpeta API
      • Rutas
    • Mongoose.js
      • Conectando a Mongosse
      • Esquemas y Modelos
      • Métodos
      • Rutas
      • Retos 🕵🏻‍♀️ 💻 🕵🏻‍♂️
    • Passport.js
      • Modelo User
      • Estrategia Local
      • Autenticación Service
      • API users
      • Configuración Passport.js
      • Middleware
      • Retos 🦸🏻‍♀️🕵🏼‍♂️
    • Refactor
    • Despliegue 🚀
  • Frontend
    • ReactJS 💙
      • Configuración Inicial
      • Componentes
      • Pages
      • Rutas
      • Conectando la API
      • Authenticación
      • Despliegue 🚀
    • VueJS 💚
      • Configuración Inicial
  • GraphQL
    • pronto...🤷🏼‍♂️
Powered by GitBook
On this page
  • Terminologías
  • Instalar Mongoose
  • Esquemas en Mongoose
  • Construyendo modelos
  • Métodos de modelos

Was this helpful?

  1. Backend

Mongoose.js

"Elegant mongodb object modeling for node.js" 🍃

PreviousRutasNextConectando a Mongosse

Last updated 5 years ago

Was this helpful?

Mongoose es una librería object-document mapping (ODM) para MongoDB. Las ventajas de utilizar un ODM son muchas y van mas allá de la organización del código o del desarrollo sencillo. Abstrae todo de la base de datos, y el código de la aplicación interactúa solo con los objetos y sus métodos. Los ODM también permiten especificar las relaciones entre diferentes tipos de objetos y poner sobre estos lógica dentro de clases.

Además, posee un sistema de validación y de tipado que puede ser extendido y personalizado acorde a sus necesidades. Cuando se usa en conjunto con Express.js, Mongoose convierte este conjunto en uno orientado al concepto de MVC (Modelo Vista Controlador).

Mongoose utiliza una interface similar a la de la shell de Mongo, el driver nativo de Mongo, y Mongoskin. Por esta razón, las funciones principales como find(), update(), insert(), save(), remove(), etc, lucen y actúan de una forma similar, lo que permite aprender Mongoose y empezarlo a utilizar con mayor sencillez y rapidez.

Terminologías

Collections

Las "colecciones" en Mongo son equivalentes a las tablas en bases de datos relacionales. Pueden contener varios documentos JSON.

Documents

Los "documentos" son equivalentes a registros o filas de datos en SQL. Mientras que una fila de SQL puede hacer referencia a datos en otras tablas, los documentos de Mongo generalmente combinan eso en un documento.

Fields

Los "campos" o los atributos son similares a las columnas en una tabla SQL.

Schema

Si bien Mongo no tiene esquema, SQL define un esquema a través de la definición de la tabla. Un "esquema" de Mongoose es una estructura de datos de documento (o forma del documento) que se aplica a través de la capa de aplicación.

Models

Los "modelos" son constructores de orden superior que toman un esquema y crean una instancia de un documento equivalente a los registros en una base de datos relacional.

Instalar Mongoose

Instalemos mongoose en el directorio de nuestro proyecto backend-js-shoppingy guárdelo en la lista de dependencias.

npm install mongoose --save

Esquemas en Mongoose

Un esquema en mongoose es una estructura JSON que contiene información acerca de las propiedades de un documento. Puede también contener información acerca de la validación y de los valores por default, y si una propiedad en particular es requerida. Los esquemas pueden contener lógica y otro tipo de información importante.

const productSchema = mongoose.Schema({
    name: String,
})

Los esquemas en Mongoose soportan estos tipos de datos.

  • String : Cadena de caracteres.

  • Number : Números que pueden ir hasta 64 bit.

  • Boolean : True o false.

  • Buffer : Tipos binarios como imagenes, pdfs, etc.

  • Date : Fechas en formato ISO.

  • Array : Arreglos.

  • Schema.Types.ObjectId : String hexadecimal utilizado por MongoDB como identificador.

  • Schema.Types.Mixed : Cualquier tipo de datos (flexible).

Construyendo modelos

Para compilar un esquema en un modelo, utiliza mongoose.model.

const product = mongoose.model('Product', productSchema);

Los modelos son utilizados para crear documentos (datos).

Métodos de modelos

Estos son algunos de los métodos del modelo que pueden ser invocados en Mongoose.

  • Model.create(data, callback(err, doc)) : Crea un nuevo documento y guarda la información en la base de datos.

  • Model.remove(query, callback(err)) : Remueve documentos de una colección que coincida con el query.

  • Model.find(query, campos, callback(err, docs)) : Localiza los documentos que coincidan con el query provisto.

  • Model.update(query, update, options, callback(err, num, raw)) : Actualiza los documentos que coincidan con el query.

  • Model.findOne(query, campos, options, callback(err, doc)) : Realiza una consulta entre los documentos que coincidan con el query pero regresa solo uno.

Mongoose.js
Object Mapping between Node and MongoDB managed via Mongoose