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

120
Vistas
Anular un método de modelo de mangosta

Tengo la siguiente ruta expresa:

 app.post('/users/me',(req, res) => { var body = req.body.email; User.find({ email: body }).then((user) => { res.send({user}); }, (e) => { res.status(400).send(e); }); });

En mi modelo de usuario, tengo el siguiente método que limita los resultados devueltos al correo electrónico y _id:

 UserSchema.methods.toJSON = function () { var user = this; var userObject = user.toObject(); return _.pick(userObject, ['_id', 'email']); };

En la mayoría de mis rutas, eso es exactamente lo que quiero, sin embargo, en esta ruta en particular me gustaría devolver campos adicionales. ¿Cómo puedo anular/omitir el método del modelo y recuperar mis campos?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Descubrí que puedo crear un método adicional y llamarlo en res.send(). Por ejemplo, si quisiera agregar una contraseña como parte de la devolución, puedo crear un nuevo método:

 UserSchema.methods.toPrivateJSON = function () { var user = this; var userObject = user.toObject(); return _.pick(userObject, ['_id', 'email', 'activeAccount', 'password']); };

Luego, en mi ruta, cuando devuelvo el objeto de usuario, llamo

 res.send(user.toPrivateJSON());

Esto invocará el método toPrivateJSON() y devolverá los campos adicionales necesarios.

over 4 years ago · Santiago Trujillo Denunciar

0

app.post('/users/me',(req, res) => { var body = req.body.email; User.find({ email: body }).then((user) => { user.private = true; //tells to model method to include additional fields res.send({user}); }, (e) => { res.status(400).send(e); }); });

Luego en el método del modelo:

 UserSchema.methods.toJSON = function () { var user = this; var userObject = user.toObject(); if(user.private) return _.pick(userObject, ['_id', 'email', 'additionalField']); else return _.pick(userObject, ['_id', 'email']); };
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