Mongoose.js 🍃
"Elegant mongodb object modeling for node.js" 🍃
Last updated
"Elegant mongodb object modeling for node.js" 🍃
Last updated
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.
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.
Instalemos mongoose en el directorio de nuestro proyecto backend-js-shopping
y guárdelo en la lista de dependencias.
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.
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).
Para compilar un esquema en un modelo, utiliza mongoose.model.
Los modelos son utilizados para crear documentos (datos).
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, callbacl(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.