Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

220
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!