Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

몽구스

From noriwiki


개요

몽구스는 직관적이고 Schema가 중심이 되는 라이브러리로써, MongoDB를 자바스크립트와 연동시켜서, 확실하고 SQL같은 느낌으로 MongoDB를 사용할 수 있게 하는 라이브러리이다.

사용 방법

패키지 설치

npm install mongoose

몽고DB에 연결

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});

혹은 여러가지 설정할 것이 있으면

mongoose.connect('mongodb://username:password@host:port/database?options...');

몽고 디비가 연결된후 실행할 항목은

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
 // we're connected!
});

스키마의 설정

몽구스는 스키마(Schema)란 정의된 모델에서 데이터의 쿼리를 담당한다 이는 noSQL인 몽고DB의 한계를 보완하는 역활을 한다.

 var blogSchema = new Schema({
   title:  String, // String is shorthand for {type: String}
   author: String,
   body:   String,
   comments: [{ body: String, date: Date }],
   date: { type: Date, default: Date.now },
   hidden: Boolean,
   meta: {
     votes: Number,
     favs:  Number
   },
   array: [Number]
 });

몽구스의 스키마는 다음과 같이 주어진다. String, Number, Date, Buffer, Boolean, Mixed, ObjectID, Array, Decimal128, Map.

모델의 설정

모델은 스키마를 객체화 한 것으로, 도큐먼트라 불리는 레벨에서 몽고DB를 조정한다.

var Tank = mongoose.model('Tank', schema); 

라 하면, 몽구스는 자동으로 복수형이고, 모두 lowercased된 컬렉션이 DB에 존재하는지 확인하고 있으면 그 컬렉션을 model에 연결하며 없으면 컬렉션을 새로 DB에 생성한다. 만약 컬렉션 이름을 내가 원하는 대로 만들고 싶으면 다음과 같이 해주어야 한다.

var dataSchema = new Schema({..}, { collection: 'COLLECTION_NAME' })

모델을 만들면

var Tank = mongoose.model('Tank', yourSchema);
var small = new Tank({ size: 'small' });
small.save(function (err) {
 if (err) return handleError(err);
 // saved!
});
// or
Tank.create({ size: 'small' }, function (err, small) {
 if (err) return handleError(err);
 // saved!
});
// or, for inserting large batches of documents
Tank.insertMany([{ size: 'small' }], function(err) {
});

이와 같이 정보를 저장할 수 있다.

CRUD

Create

  1. save
  2. create
  3. insertMany

Retrieve

  1. find
  2. findById
  3. findOne
  4. where

Update

  1. update

Delete

  1. deleteOne
  2. deleteMany