ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GraphQL + MongoDB 연동하기
    2018~2019/JavaScript 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에 데이터 생성 확인

    '2018~2019 > JavaScript' 카테고리의 다른 글

    ES2015+ (ES6)  (0) 2018.09.21
    Deploy a GraphQL server with Now  (0) 2018.07.17
    MongoDB 정리  (0) 2018.07.08
    GraphQL 정리  (0) 2018.07.07
Designed by Tistory.