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

228
Vistas
¿Cómo incluyo un campo virtual en la respuesta de la API usando Mongoose?

¿Cómo incluyo un campo virtual en una respuesta JSON?

 const ItemSchema = mongoose.Schema({ name: String, time: { type: Date, default: Date.now } }); ItemSchema.virtual('timeleft').get(function() { this.timeleft = 24 var currentTime = moment(); var timeStored = moment.utc(this.time).local().format(); this.timeleft -= currentTime.diff(timeStored, 'h'); });

llamada a la API

 app.get('/getAllItems', function(req, res, next) { Item.find({}, function(err, items) { res.json(items); }); });

Entonces, técnicamente, la respuesta no incluirá el campo virtual timeleft. ¿Me estoy perdiendo de algo?

 [ { name: "nike", time: "21/2/22" }, { name: "adidas", time: "21/2/22" }, ]
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

// use Schema like this const ItemSchema = new Schema({ name: String, time: { type: Date, default: Date.now } }, { toObject: { virtuals: true }, toJSON: { virtuals: true } }); ItemSchema.virtual('timeleft').get(function() { // this.timeleft = 24 var currentTime = moment(); var timeStored = moment.utc(this.time).local().format(); console.log(" ====== 000 ======== ", currentTime.diff(timeStored, 'h')) return this.timeleft = currentTime.diff(timeStored, 'h'); }); const Item = mongoose.model('Item', ItemSchema); new Item({ name: 'Axl' }).save((err, result) => { console.log("=== err ", err, "=== result ", result) }); Item.find({}, function(err, items) { console.log("=========", items) });
over 4 years ago · Santiago Trujillo Denunciar

0

De acuerdo con los documentos de Mongoose, los virtuales de Mongoose no se almacenan en MongoDB, lo que significa que no puede realizar consultas en función de los virtuales de Mongoose.

 // Will **not** find any results, because `domain` is not stored in // MongoDB. const doc = await User.findOne({ domain: 'gmail.com' }); doc; // undefined

Si desea consultar por una propiedad calculada, debe establecer la propiedad mediante un setter personalizado o un middleware de preguardado.

over 4 years ago · Santiago Trujillo Denunciar

0

Modifique su esquema como se muestra a continuación:

 const ItemSchema = mongoose.Schema({ name: String, time: { type: Date, default: Date.now }, toObject: { virtuals: true }, // <-- These properties will configure toJSON: { virtuals: true } // model to include virtuals });

Modifique su llamada API de la siguiente manera:

 app.get('/getAllItems', function(req, res, next) { Item.find({}, function(err, items) { res.json(items.toObject()); // <-- use .toObject() or .toJSON() }); });
over 4 years ago · Santiago Trujillo 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