Database/MongoDB

4. Node.js - Mongoose 모듈

양디 2016. 1. 26. 18:15



(이녀석이 아니다.)



Mongoose ?


Node.js 에서는 MongoDB 에 접근하여 데이터를 사용할 수 있게 해주는 모듈들이 몇가지 있다.


대표적으로 mongodb-native 나 mongoose 등이 있다.


해당 모듈들은 모두 mongodb의 기능을 성실히 수행하여 주지만, 각각의 특징점들이 있다.


mongodb-native 는 이름에 native에서 알 수 있듯이, 다른 추가적인 기능보다는 mongodb 본연의 특징을 사용하도록 해준다.


mongoose는 조금 더 기능들이 추가되었다. 


기능들이 추가된다는 것은, 속도는 저하된다는 말과 거의 같다.


다양한 기능들로 편의성을 높였으나, mongodb-native와 비교하자면 그 속도가 조금 떨어지는 것이 사실이다.


그럼에도 Mongoose가 가장 많이 쓰이는 모듈 중에 하나인 것은 명확하게 object들을 만들고, 그것과 data를 묶어서 사용하는 


ODM(Object Data Mapping) 의 특성에 기인한다.


Mongoose는 데이터를 만들고 관리하기 위하여 Schema 를 만들고, 그 Schema로 Model을 만든다.


스키마와 컬럼의 제한에서 벗어난 MongoDB이지만, Mongoose는 오히려 그 장점을 다시 가져왔다.


스키마와 모델을 만드는 것을 통하여, data를 불러온 후에 그 데이터를 객체화시키는 데에 빠르고, 그 객체를 수정함으로써 데이터에 수정을 할 수 있게 해준다.


또한 분명하게 모델링된 문서(Documents)들이 모여 있는 Collection을 관리하는것도 수월해진다는 장점이 있다.



Mongoose 설치



npm install mongoose --save


우리에겐 NPM이 있다.


그저 설치해주면 끝난다.


1
var mongoose = require('mongoose')
cs


파일 내부에선 위와 같이 모듈을 불러오면 바로 사용할 수 있다.


1
2
mongoose.connect('mongodb://localhost/dalkom');
var Schema = mongoose.Schema;
cs


이후에 1번 코드는 접속할 호스트 / DB 이름을 입력해준다.


2번 은 다음 장에서 만들 스키마를 만들기 위하여, mongoose의 스키마 객체를 옮겨 담는 것이다.


위 코드를 통해서 Schema 객체를 통해서 스키마를 만들 수 있다.


Schema / model


Mongoose는 들어갈 데이터가 지닌 속성의 타입을 지정해준 뒤에 집어넣어준다.


이 속성의 타입을 지정해주는 것이 스키마 이다.


이 지정된 스키마로 객체를 만들고, 그 객체를 문서화하여 컬렉션에 저장해주는 역할을 모델 이 한다.


1
2
3
4
5
6
7
var userid = new Schema({
  id : String,
  password : String,
  name : String
})
 
var Userid = mongoose.model('userid', userid);
cs


위와 같은 방식으로 선언을 한다.


위의 부분이 스키마를 선언하는 것이고,


아래 부분이 model을 선언하는 것이다.


이렇게 모델과 스키마를 지정 후에 ,


1
2
3
4
5
6
var newUser = new Userid({id: 'dalkom', password: 'itworld'name'yangd'});
newUser.save(function(err){
  if(err){
    return err;
  }
})
cs


위와 같이 모델을 통해 객체를 만든 후에, save 함수를 통하여 mongodb에 문서를 저장할 수 있다.


따로 컬렉션은 만들지 않아도, 새로운 정보가 들어가면 해당 DB에 컬렉션이 자동으로 만들어진다.


위와 같은 코드를 실행하면, 실제로 mongodb에 저장이 되는 것을 볼 수 있다.




계속해서 몽구스에 관한 포스팅을 하도록 하겠다.

댓글