Recent Posts
Link
Archives
킹다의 개발블로그
기존 mongoDB 컬렉션을 조회하는 mongoose + graphql 본문
반응형
현재 몽고디비에는 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;
이런식으로 graphql playground를 이용하여 데이터를 확인해봤는데 user 는 빈 컬렉션이라고 나오고 mongodb 에서는 users 라는 컬렉션이 새로 생성이 되었다.
그래서 확인해 본 결과 스키마를 작성하고 스키마를 변환해주는 모델함수를 사용할 때
첫번째 파라미터에는 해당 스키마의 이름, 두번째는 스키마 객체라고 한다.
스키마의 이름을 대문자로 시작하면 users 라고 컬렉션이 만들어진다고 한다.
이것도 모르고 계속 생성이돼서 graphql 스키마쪽을 엄청 찾아봤다.
그래서 나는 스키마이름을 ‘user’ 로 바꾸고,
세번째 파라미터를 이용해 컬렉션을 새로 생성하지 않고 현재 몽고디비에 존재하는 컬렉션을 지정할 수 있게했다. (*요점)
module.exports = mongoose.model('user', UserSchema, ‘user’);
반응형
Comments