Ahora veremos que nuestra entrada inicial, que no tiene un campo de autor, ha fallado en la validación, mientras que la entrada que tiene el campo de autor está bien para ir.Invalid Document SchemaPodemos ir más allá y añadir validaciones a los campos individuales también. Digamos que por motivos de SEO queremos que todos los títulos de las entradas del blog tengan un mínimo de 20 caracteres y un máximo de 80 caracteres. Podemos representarlo así:{
const Blog = mongoose.model(‘Blog’, blog);Lo que hicimos arriba fue crear un nuevo modelo y esquema para representar a los usuarios que dejan comentarios en las entradas del blog. Cuando un usuario deja un comentario, en lugar de almacenar información sobre él, sólo almacenamos el _id de ese usuario. Así, una operación de actualización para añadir un nuevo comentario a nuestra entrada puede ser algo así:Blog.updateOne({
});Esto es asumiendo que tenemos un usuario en nuestra colección de usuarios con el _id de 12345. Ahora bien, si quisiéramos rellenar nuestra propiedad de usuario cuando hacemos una consulta -y en lugar de devolver sólo el _id devolver el documento completo- podríamos hacer:Blog.
Este artículo presenta brevemente las bases de datos y cómo utilizarlas con aplicaciones Node/Express. A continuación, se muestra cómo podemos utilizar Mongoose para proporcionar acceso a la base de datos para el sitio web de LocalLibrary. Explica cómo se declaran los esquemas y modelos de los objetos, los principales tipos de campos y la validación básica. También muestra brevemente algunas de las principales formas de acceder a los datos del modelo.
Visión generalEl personal de la biblioteca utilizará el sitio web de la Biblioteca Local para almacenar información sobre los libros y los prestatarios, mientras que los miembros de la biblioteca lo utilizarán para navegar y buscar libros, averiguar si hay ejemplares disponibles y, a continuación, reservarlos o tomarlos prestados. Para almacenar y recuperar la información de forma eficiente, la almacenaremos en una base de datos.
Las aplicaciones Express pueden utilizar muchas bases de datos diferentes, y hay varios enfoques que se pueden utilizar para realizar operaciones de creación, lectura, actualización y eliminación (CRUD). Este tutorial proporciona una breve visión general de algunas de las opciones disponibles y luego pasa a mostrar en detalle los mecanismos particulares seleccionados.¿Qué bases de datos puedo utilizar? Las aplicaciones Express pueden utilizar cualquier base de datos soportada por Node (Express en sí no define ningún comportamiento/requisito adicional específico para la gestión de bases de datos). Hay muchas opciones populares, incluyendo PostgreSQL, MySQL, Redis, SQLite y MongoDB.
En mongoose, un esquema representa la estructura de un documento concreto, ya sea por completo o sólo una parte del documento. Es una forma de expresar las propiedades y valores esperados, así como las restricciones e índices. Un modelo define una interfaz de programación para interactuar con la base de datos (leer, insertar, actualizar, etc.). Así, un esquema responde a la pregunta “¿Cómo serán los datos de esta colección?” y un modelo proporciona funcionalidades como “¿Hay algún registro que coincida con esta consulta?” o “Añadir un nuevo documento a la colección”.
En un sistema de gestión de bases de datos relacionales (RDBMS), el esquema se implementa mediante sentencias DDL (crear tabla, alterar tabla, etc.), mientras que no existe un concepto directo de modelo, sino sentencias SQL que pueden realizar consultas muy flexibles (sentencias select), así como operaciones básicas de inserción, actualización y eliminación.
Un modelo Mongoose es una envoltura del esquema Mongoose. Un esquema Mongoose define la estructura del documento, los valores por defecto, los validadores, etc., mientras que un modelo Mongoose proporciona una interfaz a la base de datos para crear, consultar, actualizar, eliminar registros, etc.
En la lección 13, te pusiste en marcha con MongoDB. Con una base de datos conectada a tu aplicación Node.js, estás listo para guardar y cargar datos. En esta lección, aplicarás un enfoque más orientado a objetos para tus datos. Primero, instalarás el paquete Mongoose, una herramienta que proporciona una capa sintáctica entre la lógica de tu aplicación y tu base de datos. Mongoose le permite convertir los datos de su aplicación para que se ajusten a la estructura de un modelo. Más adelante en la lección, construirás tu primer modelo y esquema para representar a los suscriptores del boletín de tu aplicación de recetas.
Finalmente tienes una base de datos conectada a tu aplicación, pero los datos pueden cambiar con el tiempo. Un día, es posible que quiera exigir que todas las recetas sigan el mismo formato. ¿Cómo puede determinar esa estructura y asegurarse de que todos los datos guardados siguen las reglas de esa estructura?