• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

486
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 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error