A. email should be Joi.email() instead of Joi.string().email
B. password should not be required
C. Missing parentheses after email() method
D. min(8) is invalid for strings
Solution
Step 1: Review the email field syntax
The email method in Joi is a function and must be called with parentheses: email().
Step 2: Identify the missing parentheses
The code uses Joi.string().email without parentheses, which is incorrect and will cause an error.
Final Answer:
Missing parentheses after email() method -> Option C
Quick Check:
Joi methods require () to execute [OK]
Hint: Always add () after Joi methods like email() [OK]
Common Mistakes:
Omitting parentheses on Joi method calls
Misunderstanding required() necessity
Thinking min() is invalid for strings
5. You want to validate a user object with name (required string), age (optional number, minimum 0), and email (required valid email). Which Joi schema correctly applies these rules?
hard
A. Joi.object({ name: Joi.string().required(), age: Joi.number().min(0), email: Joi.string().email().required() })
B. Joi.object({ name: Joi.string(), age: Joi.number().min(0).required(), email: Joi.string().email() })
C. Joi.object({ name: Joi.string().required(), age: Joi.number().min(1).optional(), email: Joi.string().email().required() })
D. Joi.object({ name: Joi.string().required(), age: Joi.number().min(0).required(), email: Joi.string().email().required() })
Solution
Step 1: Check each field's requirements
Name must be a required string, age is optional number with min 0, email is required valid email string.
Step 2: Match schema to requirements
Joi.object({ name: Joi.string().required(), age: Joi.number().min(0), email: Joi.string().email().required() }) matches all: name is required string, age is number with min 0 (optional by default), email is required email string.
Step 3: Verify other options
Joi.object({ name: Joi.string(), age: Joi.number().min(0).required(), email: Joi.string().email() }) makes age required and email optional, Joi.object({ name: Joi.string().required(), age: Joi.number().min(1).optional(), email: Joi.string().email().required() }) uses min(1) for age (wrong min), Joi.object({ name: Joi.string().required(), age: Joi.number().min(0).required(), email: Joi.string().email().required() }) makes age required (wrong).