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

604
Views
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
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!