J'ai un schéma Zod pour valider les attributs de produit pour une application de commerce électronique. Dans mon schéma, j'ai actuellement un attribut appelé isLimitedEdition
qui indique si le produit est en quantité limitée. Cependant, lorsque isLimitedEdition
est défini sur true , je souhaite que toutes les autres propriétés du schéma deviennent facultatives.
Voici l'architecture existante :
const productProperties = z.object({ nom : z.string().nonempty(), description : z.string().nonempty(), prix : z.number().positive(), catégorie : z.string().nonempty(), marque : z.string().nonempty(), isFeatured : z.boolean().default(false), isLimitedEdition : z.boolean().default(false), });Dans cette architecture, je souhaite implémenter un comportement dans lequel si isLimitedEdition est défini sur true, toutes les propriétés (nom, description, prix, catégorie, marque, isFeatured) deviennent facultatives.
Comment puis-je modifier ce schéma pour obtenir le comportement souhaité ? Je serais reconnaissant pour toute orientation ou exemple de code pour m'aider à mettre en œuvre cette logique correctement. Merci d'avance!
J'ai essayé la méthode
refine
sans succès
Vous pouvez utiliser
discriminatedUnion
pour y parvenir :