Wie mache ich alle Eigenschaften im Zod-Schema optional, basierend auf einem bestimmten Produktverfügbarkeitsflag?
P粉298305266
2023-08-30 22:37:05
<p>Ich habe ein Zod-Schema zur Validierung von Produktattributen für eine E-Commerce-Anwendung. In meinem Schema habe ich derzeit ein Attribut namens <code>isLimitedEdition</code>, das angibt, ob das Produkt nur begrenzt verfügbar ist. Wenn jedoch <code>isLimitedEdition</code> auf true gesetzt ist, möchte ich, dass alle anderen Eigenschaften im Schema optional werden. </p>
<p>Dies ist die bestehende Architektur:</p>
<pre class="brush:php;toolbar:false;">const productProperties = z.object({
Name: z.string().nonempty(),
Beschreibung: z.string().nonempty(),
Preis: z.number().positive(),
Kategorie: z.string().nonempty(),
Marke: z.string().nonempty(),
isFeatured: z.boolean().default(false),
isLimitedEdition: z.boolean().default(false),
});</pre>
<p>In dieser Architektur möchte ich ein Verhalten implementieren, bei dem alle Eigenschaften (Name, Beschreibung, Preis, Kategorie, Marke, isFeatured) optional werden, wenn isLimitedEdition auf true gesetzt ist. </p>
<p>Wie kann ich dieses Schema ändern, um das gewünschte Verhalten zu erreichen? Ich wäre dankbar für jede Anleitung oder Codebeispiele, die mir dabei helfen, diese Logik korrekt zu implementieren. Vielen Dank im Voraus! </p>
<p>Ich habe die Methode <code>refine</code> ohne Erfolg ausprobiert</p>
您可以使用
discriminatedUnion
来实现此目的: