4Geeks logo
4Geeks logo
About us

Learning library

For all the self-taught geeks out there, here our content library with most of the learning materials we have produces throughout the years.

It makes sense to start learning by reading and watching videos about fundamentals and how things work.

Full-Stack Software Developer

Data Science and Machine Learning - 16 wks

Search from all Lessons

Social & live learning

The most efficient way to learn: Join a cohort with classmates just like you, live streams, impromptu coding sessions, live tutorials with real experts, and stay motivated.

← Back to Lessons

Continue learning for free about:

Edit on Github

Implementación de mongoose con mongoDB

Usar mongodb utilizando el ODM Mongoose

Usar mongodb utilizando el ODM Mongoose

Mongoose es un ODM (Object Data Model) que proporciona una solución sencilla basada en esquemas para modelar los datos de su aplicación. Incluye conversión de tipo incorporada, validación, creación de consultas, enlaces de lógica de negocios y más, listos para usar.

Para iniciar un proyecto vamos a crear una carpeta e iniciar un proyecto con npm:

$ mkdir mongoose_app_test && cd mongoose_app_test

Iniciamos un proyecto con npm

$ npm init -y

Instalar el ODM Mongoose

$ npm i --save mongoose

Importar mongoose a nuestro proyecto, creamos un archivo database.js y añadimos el siguiente codigo

1 2const mongoose = require('mongoose'); 3mongoose.connect('mongodb://localhost:27017/example') 4

Cuando nos conectamos a mongodb usando la funcion connect acepta dos parámetros opcionales. El segundo parámetro es un objeto de opciones donde se puede especificar como el usuario y la contraseña, en caso de que sea necesario. y el tercer parámetro es una funcion que retorna el resultado despues de intentar conectarse a la base de datos. La misma puede utilizarse de dos formas

Ejemplo:

1 2// Nomal 3mongoose.connect(url, options, (err) => { 4 if (err) throw err; 5 console.log('Database Connected!'); 6}); 7 8// Promises 9 10mongoose.connect(url, options).then( 11 () => {/* Database Connected! */ }, 12 (err) => {/* Database Connection Error */} 13}); 14

Mongoose proporciona una increíble cantidad de funcionalidades para crear y trabajar con esquemas. Mongoose actualmente contiene ocho SchemaTypes que una propiedad se guarda como cuando se conserva a MongoDB. Son:

  1. String (Cadena)
  2. Number (Número)
  3. Date (Fecha)
  4. Buffer
  5. Boolean (Booleano)
  6. Mixed (Mixto)
  7. ObjectId
  8. Array (Matriz)

Definir un esquema de Mongoose

Para crear un esquema utilizaremos mongoose.Schema() a través del objeto mongoose, el cual recibirá un objeto como argumento por ejemplo:

Queremos crear un usuario que tenga las propiedades nombre, email, telefono entonces para crear ese esquema haremos lo siguiente:

Ejemplo 1:

1const userSchema = mongoose.Schema({ 2 name: String, 3 email: String, 4 phone: String, 5})

Ejemplo 2:

1const userSchema = mongoose.Schema({ 2 _id: mongosee.Schema.Types.ObjectId, 3 name: String, 4 email: String, 5 phone: String, 6 created_at: { 7 type: Date, 8 default: Date.now 9 } 10})

Ejemplo 3:

1const contactSchema = mongoose.Schema({ 2 _id: mongosee.Schema.Types.ObjectId, 3 name: String, 4 phone: String, 5 user: { 6 type: mongoose.Schema.Types.ObjectId, 7 ref: 'User' 8 }, 9 created_at: { 10 type: Date, 11 default: Date.now 12 } 13})

Crear los modelos de Mongoose

Hemos anteriormente creado dos esquemas los cuales son user y contact, los cuales nos ayudaran a crear los modelos User y Contact respectivamente usando el mongoose.model() a través del objecto mongoose.

Ejemplo 1:

1const User = mongoose.model('User', userSchema); 2const Contact = mongoose.model('Contact', contactSchema);

Guardar datos usando los modelos de Mongoose

Hemos anteriormente creado dos modelos los cuales son User y Contact, los cuales nos ayudaran a crear usuarios y contactos respectivamente en la base de datos:

Ejemplo 1:

1const user = new User({ 2 name: 'John Doe', 3 email: 'john.doe@email.com', 4 phone: '+1 555 555 55 55' 5}) 6 7user.save((err) => { 8 if(err) throw err; 9 console.log('User created successfully!'); 10})

Seleccionar datos usando los modelos de Mongoose

Hemos anteriormente insertado documentos con los dos modelos User y Contact, ahora el proceso de buscar es similar al crear solo que debemos conseguir el elemento que queremos, para ellos tenemos diferentes metodos tales como find(), findOne(), findById(), findByIdAndUpdate():

Ejemplo 1:

1const user = User.find({ 2 name: 'John Doe' 3})

Ejemplo 2:

1const contact = Contact.findById({ 2 _id: '632244bb405329d320cde2ae' 3})

Actualizar datos usando los modelos de Mongoose

Hemos anteriormente localizado documentos con los dos modelos User y Contact, ahora el proceso de actualizar es similar al crear solo que debemos conseguir el elemento que queremos actualizar, para ellos tenemos diferentes metodos tales como update(), updateOne():

Ejemplo 1:

1const user = User.find({ 2 name: 'John Doe' 3}) 4 5user.update({ name: 'John A. Doe'}).exec((err) => { 6 console.log("User updated!!!"); 7 mongoose.disconnect(); 8});

Ejemplo 2:

1const contact = Contact.find({ 2 name: 'Jane Doe' 3}) 4 5contact.updateOne({ 6 name: 'Jane M. Doe' 7}).exec()

Eliminar documentos usando los modelos de Mongoose

Hemos anteriormente actualizado documentos con los dos modelos User y Contact, ahora el proceso de eliminar es similar al crear o buscar solo que debemos conseguir el elemento que queremos eliminar o usando el modelo segun el filtro suministrado, para lo cual contamos con diferentes metodos tales como deleteOne(), deleteMany() o usando la instancia del documento y usar el metodo delete:

Ejemplo 1:

1User.deleteOne({ name: 'John Doe' }, function (err) { 2 if (err) throw err; 3});

Ejemplo 2:

1User.deleteMany({ is_active: false }, function (err) { 2 if (err) throw err; 3});