[MongoDB/node.js] Mongoose 모듈을 이용하여 DB에 값 저장하기

333964__cute-mongoose_p

몽구스 귀엽다.

Mogoose 모듈 튜토리얼 (http://mongoosejs.com/docs/) 을 보면서, DB 에 값을 저장하는 연습을 하였다. MySQL과 조금 많이 다르니 잘 따라오길 바란다.

당연히 mongodb 는 설치되어 있어야한다. 우분투에서 MongoDB 설치하기

그 다음 MongoDB를 접속하고, 여러 정보를 다루기 위해 node.js 의 대표적인 3rd-party 모듈인 Mongoose를 설치해야한다. node.js 프로젝트 폴더에서 아래 명령어를 실행하여 Mongoose 모듈을 설치해주자.

npm install mongoose

모듈에대한 더 자세한 정보는 https://www.npmjs.com/package/mongoose 여기서 볼 수 있으니 참고하길 바란다.

자 Mongoose 가 설치되었다면, node.js를 작성할 차례이다.

var mongoose = require('mongoose');

mongoose 모듈을 불러온다.

mongoose.connect('mongodb://localhost/test_db')

생성된 몽구스 모듈을 이용해 로컬의 MongoDB 서버에 접속한다. localhost/뒤의 test_db 는 MongoDB의 데이터 베이스 명을 입력하는데, MongoDB는 데이터베이스를 따로 생성하지 않고, 그냥 저런식으로 존재하지 않는 DB 라도 자동으로 생성해주니 안심하자.

var db = mongoose.connection;

이어서 커넥션 객체도 하나 생성해주자.

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  console.log('DB가 열렸습니다.');
});

필요하다면, DB에 관련된 이벤트를 바인드 해줄 수 있으니 참고하자.

var kittySchema = mongoose.Schema({
  name: String
});

kittySchema 라는 스키마를 하나 생성해주자. MongoDB에는 테이블 개념이 없어서 스키마 개념또한 존재하지 않는데, Mongoose 를 사용하여, MongoDB를 사용하게 되면, 이런식으로 스키마(틀)을 생성해서 사용할 수 있다.

(2015.09.13) 정정한다. 스키마 개념이 없는 것이 아니라 스키마로부터 자유로운 것이다. (Schema-Free)

kittySchema.methods.speak = function () {
  var name = this.name;
  if (name != '') {
    console.log("내 이름은 ", name, " 이야. 반가워.");
  } else {
    console.log("나는 이름이 없단다 ㅜㅜ");
  }
};

이렇게 스키마에 메서드도 추가할 수 있다. 왜 쓰는건진 잘 모르겠지만.. 물론 지금 하고있는 데이터 저장 자체에는 큰 쓸모가 없다. 그렇지만 공식 튜토리얼에 있으니 따라해보았다.

var Kitten = mongoose.model('kitten', kittySchema);

작성한 스키마를 기반으로 모델을 생성해준다. 이 모델은 MongoDB에서 이름이 kitten인 Collection 이 된다. 특이하게도 맨 마지막 알파벳이 s가 아닌이상 복수의 의미를 가진 s를 접미사로 붙여준다. 한글에서는 그런거 없더라.

var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak();

방금 만든 모델을 기반으로 fluffy 라는 객체를 만들어준다. name 은 fluffy 다. 메서드를 호출할 수도 있다.

fluffy.save(function (err, fluffy) {
  if (err) return console.error(err);
  fluffy.speak();
});

데이터를 저장한다. 자, MongoDB 콘솔에서 확인해보는 작업을 해보자.

우분투에서 다음 명령어를 입력하여, MongoDB 로컬 서버에 접속하자.

$ mongo

생성된 DB 목록을 보자.

> show dbs
local                        0.078GB
test_db                  0.078GB

아까 우리가 생성했던 test_db 가 보인다. 이  DB 내부로 들어가보자.

> use test_dbswitched to db test_db

그리고, test_db 내부에 있는 collection 들을 보자.

> show collections

kittens

system.indexes

아까 우리가 모델 생성할때 문자열 인자로 넣어준 ‘kitten’ 에 s가 더해진 kittens collection 이 보인다. kittens 컬렉션에 있는 내용들을 보자.

> db.kittens.find()

{ “_id” : ObjectId(“55ec217ea9432e4e06594844”), “name” : “fluffy”, “__v” : 0 }

{ “_id” : ObjectId(“55ec2195aca1ca6306aef09d”), “name” : “fluffy”, “__v” : 0 }

{ “_id” : ObjectId(“55ec2197a572c67206df0152”), “name” : “fluffy”, “__v” : 0 }

{ “_id” : ObjectId(“55ec269a7fc6c53908116a04”), “name” : “fluffy”, “__v” : 0 }

 

본인은 여러번 save 해줬기 때문에 4개정도가 등록이 되어 있다. 여러분들은 아마 1개 혹은 실행시킨 만큼 저장되어 있을 것이다.

You may also like...