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

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

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 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