問題タブ [nestjs-gateways]
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.
apollo - マイクロサービス間の関係のスキーマはどうあるべきか
NestJS + Prisma + Apollo フェデレーションを使用しています。
マイクロサービス A ではユーザーの定義であり、マイクロサービス B では投稿が定義されています。関係は 1 - N で、ユーザーは N 個の投稿を持つことができます。
Prisma では、userId が uuid であるため、Post のデータモデルはユーザーの文字列で定義されます。
生成されたスキーマ ( https://graphql-code-generator.comを使用) では、Post には User 型の属性があり、この User 型は id と投稿の配列を拡張します。
apollo フェデレーションでは、クエリが両方のマイクロサービス間をリンクしようとする場合を除いて、すべてが期待どおりに機能します。
プレイグラウンドで、サブフィールドを設定せずにユーザーを使用して投稿をクエリしようとすると、スキーマが壊れて、ユーザーのサブフィールドを設定する必要があると表示されます。文字列です。
これを正しく機能させる唯一の方法は、Prisma で文字列型の userId フィールドを設定し、ユーザー型のユーザーと呼ばれるスキーマの別のフィールドを設定することでした。しかし、すべての例で、db を操作するフィールドとスキーマを操作するフィールドが示されていませんでした。
私の質問は、それが推奨されているのか、何か不足しているのかということです。