2018~2019/JavaScript

GraphQL + MongoDB 연동하기

전기도둑 2018. 7. 8. 16:06

1. Graphql-yoga 설치


- yarn add grapql-yoga


2. MongoDB 설치 및 mLab


- yarn add mongoose

- mLab 가입 후 deployment 생성 후 URL 생성


3. 코드 작성


[ index.js ]


import { GraphQLServer } from "graphql-yoga";

import mongoose from "mongoose";


mongoose.Promise = global.Promise;


mongoose.connect(

'mongodb://<dbuser>:<dbpassword>@~~~~', // mLab URL 삽입 dbuser: 아이디, dbpassword: 비밀번호

{useNewUrlParser : true});

mongoose.connection.once('open', () => {

    console.log('MongoDB Connected...');

});


const server = new GraphQLServer({

  typeDefs: "graphql/schema.graphql",

  resolvers

});


server.start(() => console.log("Graphql Server Running"));


[ Movie.js ]


import mongoose from "mongoose";


const Schema = mongoose.Schema;


const movieSchema = new Schema({

  id: String,

  title: String,

  rating: Number,

});


export default mongoose.model('Movie', movieSchema);


[ schema.graphql ]


type Movie {

  id: Int!

  title: String!

  rating: Float

}


type Query {

  movie(title: String!): Movie

}


type Mutation {

  addMovie(title:String!, rating: Float): Boolean!

}


[ resolver.js ]


import Movie from './Movie';


const resolvers = {

  Query: {

    movie: (_, { title }) => {

      return Movie.findOne({title}); // 데이터베이스에서 특정 하나의 데이터 조회

    },

  },


  Mutation: {

    addMovie: async (_, { title, rating }) => {

      let movie = new Movie({

        title,

        rating

      });


      return movie.save(); // 데이터베이스에 저장

    }

  }

};


export default resolvers;


4. 실행


- yarn start 후 localhost:4000 (Playground) 접속

- query 또는 mutation => mLab Collections에 데이터 생성 확인