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) と最低限のコードの書き方が理解できた