'mongoose'에 해당되는 글 1건

mongoose 에서의 virtual model 에 대해서 알아보자.


virtual model 이란 collection에 정의 되지 않은 filed 이지만 정의된 field 처럼 사용할 수 있게 하는 기능이다. 


예를 들어

다음과 같이 스키마를 정의하고 모델을 만들어보자.


var personSchema = new
 Schema({
  name: {
    first: String,
    last: String
  }
});

// compile our model
var Person = mongoose.model('Person', personSchema);

// create a document
var bad = new Person({
    name: { first: 'Walter', last: 'White' }
});


그 모델에 따라 document를 만들게 된다. 

그렇다면 이 도큐먼트에서 참조할 수 있는 key는 schema를 정의할 때 정의한 key 밖에 없지만,

virtual을 이용하게 되면? virtual key를 이용해 schema에 포함되지 않을 키를 설정하고 구미에 맞게 function을 통해 다양한 활용이 가능하게 된다.


다음과 같이 virtual을 쓴다. 이렇게 virtual 메소드를 써서 새로운 키 name.full을 쓸 수 있게 된다. 


personSchema.virtual('name.full').get(function () {
  return this.name.first + ' ' + this.name.last;
});




Now, when we access our virtual "name.full" property, our getter function will be invoked and the value returned:


console.log('%s is insane', bad.name.full); // Walter White is insane


virtual 에는 setter 기능도 있는데, 다음과 같이 정의하면 된다.


bad.name.full = 'Breaking Bad';



Mongoose lets you do this as well through its virtual property setters:



personSchema.virtual('name.full').set(function (name) {
  var split = name.split(' ');
  this.name.first = split[0];
  this.name.last = split[1];
});

...

mad.name.full = 'Breaking Bad';
console.log(mad.name.first); // Breaking
console.log(mad.name.last);  // Bad

'데이터베이스 > mongodb' 카테고리의 다른 글

mongoose static method vs instance method  (0) 2015.02.11
node.js mongoose에서의 virtual model  (0) 2015.02.10
mongodb에서의 join  (1) 2015.02.10
mongodb modeling  (0) 2015.02.09
블로그 이미지

종환 Revolutionist-JongHwan

github.com/alciakng 항상 겸손하자.

댓글을 달아 주세요