킹다의 개발블로그

기존 mongoDB 컬렉션을 조회하는 mongoose + graphql 본문

02. 프레임워크/node.js

기존 mongoDB 컬렉션을 조회하는 mongoose + graphql

킹다킹 2022. 5. 11. 10:22
반응형

현재 몽고디비에는 user라는 컬렉션이 이미 생성이 되어있고 데이터들이 들어가있다.

이때 나는 graphql 과 mongoose를 이용해 ‘user’라는 컬렉션에 있는 데이터들을 조회해오고싶다.

몽구스 스키마를 생성하고 model함수를 통해 스키마를 모델로 변환했다. 그리고 find() 함수를 사용해서 조회하는 코드를 만들었다.

user.js

const mongoose = require("mongoose");
let Schema = mongoose.Schema;

const UserSchema = new Schema({
    name: {
        type:String,
        required: true
    },
    age: {
        type:String
    },
    height: {
        type:String
    },
    address: {
        country: String,
        capital: String
    }
})
module.exports = mongoose.model('User', UserSchema);

resolver/index.js

const User = require('../model/user.js')
const resolvers = {
    Query: {
        async user() {
            const user = await User.find();
            return user;
        },
        ping: () => "pong"
    }
}

module.exports = resolvers;

playground를 이용한 조회

이런식으로 graphql playground를 이용하여 데이터를 확인해봤는데 user 는 빈 컬렉션이라고 나오고 mongodb 에서는 users 라는 컬렉션이 새로 생성이 되었다.


그래서 확인해 본 결과 스키마를 작성하고 스키마를 변환해주는 모델함수를 사용할 때

첫번째 파라미터에는 해당 스키마의 이름, 두번째는 스키마 객체라고 한다.

스키마의 이름을 대문자로 시작하면 users 라고 컬렉션이 만들어진다고 한다.

이것도 모르고 계속 생성이돼서 graphql 스키마쪽을 엄청 찾아봤다.

그래서 나는 스키마이름을 ‘user’ 로 바꾸고,

세번째 파라미터를 이용해 컬렉션을 새로 생성하지 않고 현재 몽고디비에 존재하는 컬렉션을 지정할 수 있게했다. (*요점)

module.exports = mongoose.model('user', UserSchema, ‘user’); 

 

반응형
Comments