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

387
Views
¿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 answers
Answer question

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 Report
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!