Mongoose.js
"Elegant mongodb object modeling for node.js" 🍃

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-shopping
y 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.
Last updated
Was this helpful?