2022年10月13日のブックマーク (2件)

  • GraphQL で N+1 問題を解決する 4 つのアプローチ

    この記事では TypeScript + Apollo Server + TypeORM を前提として話を進めます。 GraphQL のサーバ実装では 1:N 構造において N+1 問題が発生しがち 技術選定がこれからの場合や、ORM が置き換えられる場合は N+1 を考慮した ORM を検討するのが良い それ以外の場合は DataLoader を実装するのが良さそう。ライブラリを使えばそんなに大変ではない JOIN での解決も可能だが、 GraphQL の道を踏み外している(ように感じる) GraphQL における N+1 問題 GraphQL サーバで 1:N のデータ構造を実装しクエリすると、すぐに N+1 問題に行き当たります。User と Post が 1:N の関係となる、以下の例を見てみましょう。 type User { id: Int! name: String! posts

    GraphQL で N+1 問題を解決する 4 つのアプローチ
    shingo-sasaki-0529
    shingo-sasaki-0529 2022/10/13
    Prisma 賢い
  • Prisma + Apollo ServerでGraphQLサーバーを建てる - Qiita

    { "compilerOptions": { "sourceMap": true, "outDir": "dist", "strict": true, "lib": ["esnext"], "esModuleInterop": true } } Prismaのセットアップ prisma init npx prisma init を実行して、Prismaのスキーマやマイグレーションファイルを生成する。 生成されたファイルは prisma/ 以下にある。 DB設定 今回はpostgresを使用するので、使っていなければ先に起動できる状態までセットアップしておく。 postgresの使用するユーザー名、パスワード、ホストDB名がわかれば、 prisma init によって生成された.envにDB接続情報を書く。 # DATABASE_URLは以下の書式に従う。 # postgresql://U

    Prisma + Apollo ServerでGraphQLサーバーを建てる - Qiita
    shingo-sasaki-0529
    shingo-sasaki-0529 2022/10/13
    やっぱ codegen + Prisma + TS でリゾルバ実装するとインピーダンスミスマッチ起こってちょっと面倒なとこあるな。モデルの数だけマッパー用意するの面倒だけどもっと良い方法あるのかな?