GraphQLスキーマを定義して利用する方法
graphql.jsでスキーマを外部定義して利用する方法をメモる
graphql.schema
schema {
query: PostSchema
}
type Post {
title: String
permalink: String
}
type PostSchema {
posts: [Post]
}
script.js
import { buildSchema, graphql } from "graphql";
import fs from "fs";
const postsList = [
{ title: "A" },
{ title: "B" },
{ title: "C" }
];
const root = {
posts: () => { return postsList; }
};
const schemaData = fs.readFileSync("graphql.schema").toString();
const schema = buildSchema(schemaData);
graphql(schema, "{ posts {title} }", root).then(res => {
for (var data of res.data.posts) {
console.log(data);
}
});
終わり
余談: graphql.jsのAPIで定義したスキーマを出力させる方法
printSchemaがあるのでそれを使う
import { printSchema } from "graphql/utilities";
const schema = new GraphQLSchema({ query: Query });
console.log(printSchema(schema));