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

596
Vistas
Validación del esquema Mongoose: esta palabra clave no funciona dentro de la validación

Estoy tratando de validar el campo gamesPlayed de PlayerSchema en función del valor de gamesWon y viceversa. El valor de gamesPlayed siempre debe ser mayor o igual al valor de gamesWon .

Aquí está el fragmento de código que estoy usando para la validación.

 validate: { validator: (value) => { return value >= this.gamesWon; }, message: (props) => `gamesPlayed can't be less than gamesWon, invalid value: ${props.value}` }

Al hacerlo, sin importar lo que pase en el cuerpo de la solicitud, obtengo el error de validación anterior. Después de trabajar un poco, me di cuenta de que estoy obteniendo un objeto vacío como el valor de this . Así que probé un enfoque diferente para validar el campo gamesWon .

 PlayerSchema.path('gamesWon').validate((value)=>{ return value <= this.gamesPlayed; })

Después de hacerlo, sigo obteniendo el objeto vacío como valor de this .

Aquí está el código de mi archivo models.js

 const mongoose = require('mongoose'); const PlayerSchema = new mongoose.Schema({ _id: Number, name: { type: String, required: true, }, gamesWon : { type: Number, min: 0, required: true, }, gamesPlayed : { type: Number, min: 0, required: true, validate: { validator: (value) => { return value >= this.gamesWon; }, message: (props) => `gamesPlayed can't be less than gamesWon, invalid value: ${props.value}` } }, }) PlayerSchema.path('gamesWon').validate((value)=>{ return value <= this.gamesPlayed; }) const Player = mongoose.model("Player",PlayerSchema); module.exports = Player

Estoy pasando debajo de json como el cuerpo de la solicitud a través del cartero para el punto final POST

 { "_id": 1, "name": "ClassHacker", "gamesWon": 5, "gamesPlayed": 7 }

Por lo que sé, podemos usar this validación interna, pero en mi caso, no creo que funcione en absoluto o puede ser que esté haciendo algo mal y, si ese es el caso, hágame saber qué estoy haciendo mal y ¿Cómo debo validar estos campos?

about 4 years ago · Santiago Gelvez
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