特定の製品可用性フラグに基づいて、Zod スキーマのすべてのプロパティをオプションにするにはどうすればよいですか?
P粉298305266
2023-08-30 22:37:05
<p>電子商取引アプリケーションの製品属性を検証するための Zod スキーマがあります。現在、私のスキーマには、製品の供給が限定されているかどうかを示す <code>isLimitedEdition</code> という属性があります。ただし、<code>isLimitedEdition</code> が true に設定されている場合、スキーマ内の他のすべてのプロパティをオプションにする必要があります。 </p>
<p>これは既存のアーキテクチャです:</p>
<pre class="brush:php;toolbar:false;">const productProperties = z.object({
名前: z.string().nonempty()、
説明: z.string().nonempty()、
価格: z.number().positive()、
カテゴリ: z.string().nonempty()、
ブランド: z.string().nonempty()、
isFeatured: z.boolean().default(false)、
isLimitedEdition: z.boolean().default(false)、
});</pre>
<p>このアーキテクチャでは、isLimitedEdition が true に設定されている場合、すべてのプロパティ (名前、説明、価格、カテゴリ、ブランド、isFeatured) がオプションになる動作を実装したいと考えています。 </p>
<p>望ましい動作を実現するためにこのスキーマを変更するにはどうすればよいですか?このロジックを正しく実装するためのガイダンスやコード例があれば幸いです。よろしくお願いします! </p>
<p><code>refine</code> メソッドを試しましたが成功しませんでした</p>
これを実現するには、
リーリーdiscriminatedUnion
を使用できます: