Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

278
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda