ホームページ  >  に質問  >  本文

特定の製品可用性フラグに基づいて、Zod スキーマのすべてのプロパティをオプションにするにはどうすればよいですか?

<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>
P粉298305266P粉298305266416日前393

全員に返信(1)返信します

  • P粉225961749

    P粉2259617492023-08-31 17:26:21

    これを実現するには、discriminatedUnion を使用できます:

    リーリー

    返事
    0
  • キャンセル返事