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

389
Visualizações
¿Es necesario usar múltiples validaciones de esquema Joi con Hapi?

Miré un código base existente y noté que el código base tenía dos validaciones de esquema para lo que siento que un solo esquema podría validar ya que el segundo esquema es una rama del primero. Consulte la base de código a continuación.

 export const StudentSchema = Joi.object().keys({ _id, name, dob, gender, grade }); export const StudentUpdateSchema = Joi.object().keys({ name, dob, })

Ahora estos esquemas se están utilizando en las siguientes rutas:

 //CREATE ROUTE { method: 'POST', path: '/students/{id}', handler: async (request) => { const { id } = request.params; return Student.create(id, request.payload); }, options: { ...sharedOptions, description: 'Enrolling a student', validate: { failAction, payload: StudentSchema, params: { studentId: Joi.objectId().required() }, }, response: { status: { 200: StudentSchema, 400: Joi.any(), }, }, }, }, // UPDATE ROUTE { method: 'PUT', path: '/students/{id}', handler: async (request) => { const { id } = request.params; return Student.update(Id, { $set: request.payload }); }, options: { ...sharedOptions, description: 'Update student details', validate: { failAction, payload: StudentUpdateSchema, params: { studentId: Joi.objectId().required(), }, }, response: { status: { 200: StudentSchema, 400: Joi.any(), 404: Joi.any(), }, }, }, }

Soy nuevo en Hapi pero tengo algo de experiencia con Express y Mongoose y me inclino a volver a escribir estas validaciones para usar ÚNICAMENTE StudentSchema en el método 'POST' y 'PUT' ya que StudentSchema contiene todo lo que se requiere para manejar ambos la función de creación y actualización.

¿Alguien con experiencia en HapiJS puede validar las ventajas y desventajas de usar un solo objeto de esquema (en este caso, StudentSchema) o debo continuar con el paradigma actual de usar los dos esquemas?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Yo diría que este patrón de diseño es la mejor práctica. En una actualización parcial, debe tener un esquema adecuado para representar mejor el objeto entrante. Sin embargo, puede evitar los dos esquemas conservando el concepto detrás de ellos al extender el primero usando las claves opcionales .

 const createSchema = Joi.object().keys({ _id: Joi.objectId(), name: Joi.string().required(), dob: Joi.string().required(), gender: Joi.string().required(), grade: Joi.number().required() }); const updateSchema = createSchema.optionalKeys("gender", "grade", "_id"); Joi.validate({name: "this fails"}, createSchema); // error: required fields missing Joi.validate({name: "this works"}, updateSchema);

De esta manera, tiene un esquema completo que lo protege al mismo tiempo que permite una actualización de campo parcial.

over 4 years ago · Santiago Trujillo Relatório
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