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

76
Vistas
Cómo asegurarse de que solo uno de los dos campos se complete en mongoDB

Estoy usando mangosta como ODM y tratando de modelar un animal/mascota. En el modelo tengo 2 campos, padre y refugio. Quiero asegurarme de que la mascota pertenezca a una persona o a un refugio, pero no a ambos. ¿Qué limitaciones me permitirían hacer esto?

Mi modelo en JS: -

 const petSchema = mongoose.Schema({ name: { type: String, required: [true, "Pet must have a name."], trim: true }, species: { type: String, required: [true, "Pet must have a species."] }, parent: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, shelter: { type: mongoose.Schema.Types.ObjectId, ref: 'Shelter' } }

Soy nuevo en las bases de datos y sus jergas, corrígeme si hay algún error en cuestión. Gracias.

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

0

Puede usar la función requerida para determinar esto de la siguiente manera:

 const petSchema = mongoose.Schema({ name: { type: String, required: [true, "Pet must have a name."], trim: true }, species: { type: String, required: [true, "Pet must have a species."] }, parent: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: function() { return !this.shelter; } }, shelter: { type: mongoose.Schema.Types.ObjectId, ref: 'Shelter', required: function() { return !this.parent; } } }
over 4 years ago · Santiago Trujillo Denunciar

0

Terminé usando middleware de prevalidación en mongoose: -

 petSchema.pre('validate', function (next) { if((this.parent && this.shelter) || (!this.parent && !this.shelter)) return next(new Error("At least and Only one field(parent, shelter) should be populated")) next() })
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