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

112
Vistas
Mongoose permite que exista una clave solo si otra se establece en un cierto valor

Tengo una colección que describe las solicitudes. Se parece a esto:

 const requestSchema = mongoose.Schema({ status: { type: String, required: true, enum: ["available", "failed", "succeed"], }, errorCode: { type: String , required : (when status is failed)}, });

Mi objetivo es requerir el código de errorCode solo si status se establece en 'failed' y no permitir que exista de otra manera. Y, si es posible, eliminarlo cuando el estado cambie a 'succeed' por ejemplo. No puedo encontrar una respuesta en ningún lado.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede pasar una función a required para hacer que el código de errorCode sea obligatorio solo si status es igual a "failed" , así:

 const requestSchema = mongoose.Schema({ status: { type: String, required: true, enum: ["available", "failed", "succeed"], }, errorCode: { type: String, required: function () { return this.status === "failed"; }, }, });

Para eliminarlo cuando el status cambia a "succeed" , o a cualquier otro valor que no sea "failed" , puede usar el método pre , así:

 requestSchema.pre("save", async function (next) { if (this.status !== "failed") { // change it as you want this.errorCode = ""; } next(); });
about 4 years ago · Juan Pablo Isaza 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