GraphQLスキーマを定義して利用する方法

2018-07-12T00:00:00+09:00 JavaScript 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));

GraphQL.jsでMutation RailsでJWT認証