2012-04-11 3 views
4

,
내가 모델을 정의하려면, 나는 다음과 같은 사용할 수 있습니다몽구스가 왜 이렇게 설계 되었습니까? 나는 몽구스에 새로 온

var ArticleSchema = new Schema({ 
    _id: ObjectId, 
    title: String, 
    content: String, 
    time: { type: Date, default: Date.now } 
}); 
var ArticleModel = mongoose.model("Article", ArticleSchema); 

그런데 왜 이런 그냥 코드 : 몽구스

var ArticleModel = new Model({ 
    // properties 
}); 

이었다 왜 이런 방식으로 설계 되었습니까? "ArticleSchema"를 재사용 할 수있는 상황이 있습니까?

답변

10

고유 한 모델로 매핑되지 않는 하위 문서의 스키마를 정의 할 수 있도록 디자인되었습니다. 컬렉션과 모델에는 일대일 관계가 있습니다. 에서

Mongoose website :

var Comments = new Schema({ 
    title  : String 
    , body  : String 
    , date  : Date 
}); 

var BlogPost = new Schema({ 
    author : ObjectId 
    , title  : String 
    , body  : String 
    , buf  : Buffer 
    , date  : Date 
    , comments : [Comments] 
    , meta  : { 
     votes : Number 
    , favs : Number 
    } 
}); 

var Post = mongoose.model('BlogPost', BlogPost); 
+1

가져 왔습니다. 고마워. 그리고이 방법으로 디자인하면 같은 스키마를 가진 다른 콜렉션이있을 때 스키마를 재사용 할 수 있다고 생각합니다. – Kevin

4

가끔씩 스키마 파일을 별도의 파일로 분할하고 이런 종류의 작업을 수행합니다.

// db.js 
var ArticleSchema = require("./ArticleSchema"); 
mongoose.Model("Article", ArticleSchema); 

모델에 정적 및 기타 방법이 많고 주 모델 파일이 엉망인 경우에만 유용합니다.

+0

당신이했던 경우 'var에 ArticleSchema = ("./ ArticleSchema")을 필요로; var Article1 = 몽구스. 모델 ("Article1", ArticleSchema); var Article2 = mongoose.Model ("Article2", ArticleSchema); ' 다른 파일에서 가져 오기/가져 오기를 어떻게 하시겠습니까?''' – morgs32