Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

599
Visualizações
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 à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda