2012-04-11 23 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

それは、別個のモデルにマップされないサブ文書のスキーマを定義できるように設計されています。コレクションとモデルの間には1対1の関係があることに注意してください。

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 = mongoose.Model( "Article1"、ArticleSchema); var Article2 = mongoose.Model( "Article2"、ArticleSchema); ' これらのコレクションを別のファイルでどのようにインポート/必要としますか? '' ' – morgs32

関連する問題