GraphQL の学習メモ - 2

riki
·

GraphQL の学習メモ - 1 の続きをする。

教材: 【GraphQL入門】RESTに代わるモダンAPIのGraphQLでニュースアプリAPIを構築しながら基礎を学ぶ入門講座 のセクション5 から再開。

Prisma とは?

  • ORM (Node.js, TypeScript)

  • CLI があり、`prisma init` を実行すると .env と schema.prisma のファイルが作成される

  • 以下のようなコードで prisma client を instance 化して呼び出す

const { PrismaClient } = require('@prisma/client');

const prisma = new PrismaClient();

// prisma client からは便利メソッドが生えているので作成や取得に利用する

// prisma.hogehoge.create()

// prisma.hogehoge.findMany()

あとは Apollo サーバーと組み合わせることで DB 接続込みのサーバーを構築できる。以下はサンプルコード。

const resolvers = {

Query: {

info: () => `Hackernews clone API`,

feed: async (parent, args, context) => {

return await context.prisma.link.findMany();

},

},

Mutation: {

post: async (parent, args, context) => {

const newLinks = await context.prisma.link.create({

data: {

url: args.url,

description: args.description,

},

});

return newLinks;

},

},

};

const server = new ApolloServer({

typeDefs: fs.readFileSync(path.join(__dirname, 'schema.graphql'), 'utf-8'),

resolvers,

context: { prisma },

});

まとめ

  • ApolloServer に context を設定することで、resolver から context を呼び出すことができる

  • Prisma (ORM, Client) を利用してデータの CRUD の方法を学んだ

  • resolever 内にて Prisma Client を呼び出すことで、データの永続化が可能になった

  • ここまでできれば、GraphQL なんもわからんから、ちょっとわかるまでは到達できたと言える

    • GraphQL の基本 (typeDefs, resolver) と最低限のコードの書き方が理解できた