Email: leangilutn@gmail.com Schema Types Mongoose – Schema type Los tipos de datos que se puede declarar en el schema son los siguientes: •String •Number •Date •Buffer •Boolean •Mixed •ObjectId •Array •Decimal128 •Map Mongoose – Schema type (Índices) •index: boolean, establece un indice con el campo especificado. •unique: boolean, define un indice de tipo unique Mongoose – Schema type (String) •lowercase: Se aplica minúsculas a toda consulta •uppercase: Se aplica mayúsculas a toda consulta •trim: Quita espacios al elemento aplicado en las consultas •match: Valida la expresion regular especificada •enum: Crea un validador en base al array especificado •minlength: Valida que el numero de caracteres sea mayor al especificado •maxlength: Valida que el numero de caracteres sea menor al especificado Mongoose – Schema type (String)
Se puede declarar el tipo con la clase “String” o como ‘String’
El metodo toString() permite convertir a string cualquier valor
(excepto arrays) Mongoose – Schema type (number / date) •Min: Valida que el numero ingresado sea mayor al establecido •Max: Valida que el numero ingresado sea menor al establecido Mongoose – Schema type (number / date)
Se puede declarar el tipo con la clase “Number” o como
‘Number’ Modificadores Mongoose – Modificadores propios Set Por ejemplo tenemos el campo sitioweb que deberia comenzar con ‘http://’ o con ‘https://’, pero en lugar de forzar al cliente a agregar esto en la UI, puedes escribir un modificador personalizado que valide la existencia de estos prefijos y los agregue cuando sea necesario. Para agregar tu modificación personalizado necesitaras crear el nuevo campo sitio web con una propiedad set.
Cada usuario creado tendrá una url de un sitio web bien
formada que se modifica en tiempo de creacion. Mongoose – Modificadores propios Mongoose – Modificadores propios Get Los modificadores getter se usan para modificalos los datos existentes antes de enviar los documentos a la siguiente capa. Por ejemplo en nuestro ejemplo previo un modificador getter a veces seria mejor cambiar el documento de usuario ya existenque modificando su campo sitioweb en tiempo de busqueda, en lugar de recorrer toda la coleccion MongoDB actualizando cada componente.
Con el método UserSchema.set('toJSON', {getters: true});
habilitamos para que todas en todos los json devueltos por las consultas se aplica el getter Mongoose – Modificadores propios Atributos Virtuales Mongoose – Virtuales Algunas veces puedes queres tener propiedades de los documentos calculadas dinamicamente, las cuales no estan realmente presentes en el documento. A estas propiedades se le llaman atributos virtuales y se pueden usar para obtener requisitos comunes.
Por ejemplo digamos que quieres agregar un nuevo campo
nombreCompleto, que represente la concatenacion del nombre y del apellido del usuario. Para ello usaremos el metodo virtual() Mongoose – Virtuales
Retornara en el json un nuevo atributo del documento
denominado “nombreCompleto” Mongoose – Virtuales Pero los atributos virtuales pueden tambien tener setters para ayudar a tus documentos como prefieras en lugar de solamente agregar mas atributos. En este caso digamos que quieres romper la entrada del campo nombreCompleto en sus campos nombre y apellido. Mongoose – Virtuales Índices Mongoose – Modificadores propios MongoDB soporta varios tipos de índices para optimizar la ejecución de las búsquedas. Mongoose también soporta la funcionalidad de indexado e incluso nos permite definir índices secundarios.
El ejemplo básico de indexación es el índice único, el cual valida
la unicidad de un campo de un documento en una colección. En nuestro ejemplo es común que los nombres de usuario sean únicos, así que vamos a modificar la definición de UsuarioSchmea para realizar esto Mongoose – Modificadores propios Mongoose – Modificadores propios Mongoose también soporta la creación de índices secundarios usando la propiedad index. Así si por ejemplo sabes que tu aplicación tendrá muchas búsquedas que conllevan al campo email, podrás optimizar estas búsquedas creando un índice secundario email Mongoose – Modificadores propios Populate Mongoose – Populate Imaginemos una base de datos relacional de libros. Tendríamos una tabla con los títulos de los libros y otra con los datos de los autores. El campo autor en la tabla de libros, apuntaría a un ID o clave primaria de un autor de la tabla autores. Mongoose – Populate supongamos un modelo sencillo para libro de la siguiente manera: Mongoose – Populate supongamos un modelo sencillo para libro de la siguiente manera:
Si nos fijamos, para el campo autor en el modelo libro hemos usado el
tipo Schema.ObjectId y la referencia al modelo Autor. Esto nos permitirá establecer la relación entre un campo de una tabla y otra. Mongoose – Populate Para consultar los datos lo haremos de la siguiente manera:
Luego aplicamos método populate dentro del callback de libros
Mongoose – Populate Para consultar los datos lo haremos de la siguiente manera:
Luego aplicamos método populate dentro del callback de libros
Mongoose – Populate La línea Autor.populate(libros, {path: "autor"},...); toma el array de objectos libros y le indica que en la ruta autor lo "popule" con los datos del modelo Autor. Quedando una respuesta más completa como este ejemplo: Mongoose – Populate En el caso de querer querer guardar datos se debe asociar al campo autor de un libro un object id valido, por ejemplo: Mongoose – Populate Utilizando async / await Mongoose – Populate Utilizando async / await