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

215
Vistas
Mongoose Eliminar clave (s) del esquema secundario (subdocumentos anidados)

Tengo dos esquemas definidos, imageSchema y userSchema. imageSchema tiene una clave publicada por: userSchema. La pregunta es: ¿debo eliminar los atributos no utilizados de userSchema (como la contraseña) cuando están anidados en imageSchema? Si es así, ¿cómo hacerlo?

 var userSchema = new mongoose.Schema({ email: String, password: String, name: String, }, {versionKey: false}) var imageSchema = new mongoose.Schema({ filePath: String, user: userSchema, createdAt: Date, comments: [{body: "String", by: mongoose.Schema.Types.ObjectId}] }) ... app.post("/upload-image", async function(req, res){ if(req.session.user_id) { ... fileSystem.rename(oldPath, newPath, function(err2){ getUser(req.session.user_id, function(user){ delete user.password var currentTime = new Date().getTime() Image.create({ "filePath": newPath, "user": user, "createdAt": currentTime, "comments": [] }, function(err2, data){ res.redirect("/?message=image_uploaded") }) ...

Entonces, después de crear un nuevo documento de imagen, revisé la base de datos, el campo de usuario de la nueva imagen tiene el atributo de contraseña, que no se desea. "Eliminar usuario.contraseña" parece no funcionar. ¿Cómo debo eliminar este atributo? ¿Debería hacerlo al definir el imageSchema o eliminarlo al publicar los datos (la parte app.post)?

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Esto se puede hacer de varias maneras. La forma en que me gusta es excluir el campo del esquema y también excluirlo durante la inserción.

Excluir del esquema

 var imageSchema = new mongoose.Schema({ filePath: String, user: userSchema.pick(["email", "name"]), // this will return schema with only email and name from the schema createdAt: Date, comments: [{body: "String", by: mongoose.Schema.Types.ObjectId}] })

Excluir al insertar

estamos omitiendo el usuario aquí antes de la inserción, esto también se puede hacer con guion bajo/lodash _.omit(user, 'password')

 getUser(req.session.user_id, function({password, ...user}){ Image.create({ "filePath": newPath, "user": user, "createdAt": Date.now(), "comments": [] }) }
about 4 years ago · Santiago Gelvez 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