Virtuales de mangosta

Los virtuales son propiedades de documentos que no persisten ni se almacenan en la base de datos MongoDB, solo existen lógicamente y no se escriben en la colección del documento.

Con el método get de la propiedad virtual, podemos establecer el valor de la propiedad virtual a partir de los valores de campo del documento existente y devuelve el valor de la propiedad virtual. Mongoose llama al método get cada vez que accedemos a la propiedad virtual.

Módulo de instalación:

Paso 1: puede visitar el enlace Instalar mongoose para obtener información sobre cómo instalar el módulo mongoose . Puede instalar este paquete usando este comando:

npm install mongoose

Paso 2: después de instalar el módulo mongoose, puede importarlo a su archivo usando el siguiente código:

const mongoose = require('mongoose');

Base de datos: Inicialmente, tenemos una colección de usuarios vacía en la base de datos GFG .

Inicialmente, la colección de usuarios está vacía.

Implementación del método Get:

Nombre de archivo: app.js

Javascript

// Requiring module
const mongoose = require('mongoose');
const express = require('express');
const app = express();
  
// Connecting to database
mongoose.connect('mongodb://localhost:27017/GFG',
    {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useFindAndModify: false
    });
  
// Constructing mongoose schema
const userSchema = new mongoose.Schema({
    name: {
        first: String,
        last: String
    }
});
  
// Setting virtual property using get method
userSchema.virtual('name.full')
    .get(function () {
        return this.name.first + ' ' + this.name.last;
    })
  
// Creating mongoose model
const User = mongoose.model('user', userSchema);
  
const newUser = new User({
    name: {
        first: "David",
        last: "Beckham"
    }
})
  
newUser.save()
    .then(u => {
        console.log("USERNAME: ", u.name.full)
    })
    .catch(error => {
        console.log(error);
    })

Ejecute el archivo app.js con el siguiente comando:

node app.js

Producción:

Salida después de ejecutar app.js

Base de datos: Después de la ejecución del programa, nuestra base de datos se verá así.

Recopilar usuarios después de ejecutar app.js

Explicación: Aquí, el esquema contiene los campos nombre.primero y nombre.apellido y tiene una propiedad virtual nombre.completo . Cada vez que se accede a name.full , se llama al método get y obtenemos el nombre completo como una concatenación de nombre y apellido. Por lo tanto, siempre que tengamos que obtener el nombre completo, no tenemos que acceder al nombre y apellido por separado y concatenarlos, sino que podemos obtenerlos fácilmente a través de la propiedad virtual.

Con el método set de propiedad virtual, podemos establecer el valor de los campos de documentos existentes a partir del valor de la propiedad virtual. 

Implementación del Método Set:

Nombre de archivo: index.js

Javascript

// Requiring module
const mongoose = require('mongoose');
const express = require('express');
const app = express();
  
// Connecting to database
mongoose.connect('mongodb://localhost:27017/GFG',
    {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useFindAndModify: false
    });
  
// Constructing mongoose schema
const userSchema = new mongoose.Schema({
    name: {
        first: String,
        last: String
    }
});
  
// Setting the firstname and lastname using set method
userSchema.virtual('name.full')
    .get(function () {
        return this.name.first + ' ' + this.name.last;
    })
    .set(function (value) {
        var fname = value.split(' ');
        this.name.first = fname[0];
        this.name.last = fname[1];
    })
  
// Creating mongoose model
const User = mongoose.model('user', userSchema);
  
const newUser = new User({
    name: {
        full: "Dave Bautista"
    }
})
  
newUser.save()
    .then(u => {
        console.log("FIRSTNAME: ", u.name.first,
                    "\nLASTNAME:", u.name.last)
    })
    .catch(error => {
        console.log(error);
    })

Ejecute el archivo index.js con el siguiente comando:

node index.js

Producción:

Salida después de ejecutar index.js

Base de datos: Después de la ejecución del programa, nuestra base de datos se verá así.

Recopilar usuarios después de ejecutar index.js

Explicación: Aquí, cuando el usuario guarda el documento usando la propiedad virtual name.full , la función set establece automáticamente los valores de los campos name.first y name.last usando name.full . Por lo tanto, con la ayuda de la propiedad virtual, no necesitábamos proporcionar cada campo por separado para crear un documento.

Publicación traducida automáticamente

Artículo escrito por localhost3000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *