問題タブ [prisma-graphql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1479 参照

graphql - GraphQL データ モデリング - 拡張型 (Prisma)

私の Prisma Data Model では、次のような基本的な User タイプから始めました。

現在、ユーザーは、候補者として、または雇用主に関連付けられたユーザーとして、2 つの役割を持つことができます。候補者の場合、ユーザーには一連のアプリケーションと一連の資格も必要です。雇用者に関連付けられている場合は、アクセス レベルと雇用者への参照が必要です。

まず、GraphQL データ モデリングで基本型を拡張する方法はありますか? もしそうなら、どうすればそれを行うことができますか?

そうでない場合は、3 つの異なる方法が使用されていることがわかります。それぞれのアプローチの長所と短所を知りたいです。

  1. と の2 つの別個の型がCandidateUserありEmployerUser、それぞれにフィールドnameemail、 がありpasswordます。このアプローチには 2 つの問題があります。@uniqueタグ onemailは信頼性が低く、フィールドが両方のタイプで一意であることを確認するためにカスタム検証を作成する必要があります。また、メールを受け取ってユーザーの対応するデータを取得する単一のログイン関数を持つことは、もはや簡単ではありません。両方のテーブルでルックアップを行う必要があります。

このような:

  1. ここでも 2 つの別個の型ですが、 がRootUser含まれておりname、、 、および があり、それぞれが への 1 対 1 の参照を持っています。これにより、電子メール フィールドにタグが強制されますが、ルックアップは依然として自明ではありません。emailpasswordCandidateUserEmployerUserRootUser@unique

    /li>
  2. Userオプションのパラメーターとして、EmployerUser および CandidateUser 内のフィールドを持つように拡張します。これは非常に単純なアプローチですが、必要なフィールドを強制するカスタム処理が必要になります (たとえば、候補者にはそのフィールドが存在しないため、雇用主を必須としてマークすることはできません)。

    /li>

これを解決するためのより良い方法があるかどうかを本当に聞きたいです。私はまだGraphQLにかなり慣れておらず、そもそも最高のデータモデラーではありませんが、正しい方向への微調整を大いに感謝します:)

また、リストした 3 つ以外に選択肢がない場合、どれが最も理にかなっていますか?