Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

276
Vistas
¿Qué es un virtual para una URL en Mongoose?

Actualmente estoy siguiendo un tutorial sobre la implementación de una base de datos (Mongoose) en un sitio web simple creado con Express-framework. No tengo ningún problema para entender el concepto de modelos, pero no le doy sentido a las líneas que siguen al comentario " URL virtual para libro " en el código adjunto. ¿Cómo operan estas líneas y qué papel tiene en este contexto tener una propiedad virtual?

 var mongoose = require('mongoose'); var Schema = mongoose.Schema; var BookSchema = new Schema( { title: {type: String, required: true}, author: {type: Schema.Types.ObjectId, ref: 'Author', required: true}, summary: {type: String, required: true}, isbn: {type: String, required: true}, genre: [{type: Schema.Types.ObjectId, ref: 'Genre'}] } ); // Virtual for book's URL BookSchema .virtual('url') .get(function () { return '/catalog/book/' + this._id; }); //Export model module.exports = mongoose.model('Book', BookSchema);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Los virtuales se utilizan normalmente para las propiedades calculadas en los documentos.

 BookSchema // 'url' is the name of the virtual .virtual('url') .get(function () { // you are computing dynamic url return '/catalog/book/' + this._id; });

Lo importante de los virtuales es que no almacena nada en la base de datos. Imagine que almacenó "nombre" y "apellido", pero desea mostrar el nombre completo sin tener la columna "nombre completo". Estaría utilizando datos repetidos en la base de datos si agrega la propiedad de fullname a su esquema, esto se ralentizará y también le costará. En su lugar, escribe virtual:

 YourSchema.get(function(){ return this.firstname + ' ' + this.lastname })

También puede ir un paso más allá y devolver la propiedad de nombre fullname tal como está en una columna en la base de datos. Mongoose Schema toma objeto de opciones

 let options={ toJSON:{ virtuals: true } }

establecer el virtual

 let YourSchemaVirtual=YourSchema.virtual('fullname')

ahora al consultar la base de datos, obtenga la colección

 YourModel.findOne({firstname:"name"}).exec(function(err,user){ res.send(user) })

En el valor de retorno, verá el campo de nombre completo calculado como fullname this.firstname + ' ' + this.lastname fullname no tenga un nombre completo almacenado en la base de datos.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda