2012-04-11 7 views
4

Ich bin neu zu Mungo,
Wenn ich ein Modell definieren wollen, könnte ich folgendes verwenden:Warum wurde Mungo auf diese Weise entworfen?

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

Aber warum nicht einfach folgenden Code:

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

Warum war Mungo auf diese Weise entworfen? Gibt es eine Situation, in der ich "ArticleSchema" wiederverwenden kann?

Antwort

10

Es wurde so entworfen, dass Sie ein Schema für Filialdokumente definieren können, die nicht bestimmten Modellen zugeordnet sind. Beachten Sie, dass zwischen Sammlungen und Modellen eine Eins-zu-eins-Beziehung besteht.

Von der 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

Ich habe es verstanden. Danke vielmals. Und ich denke, Design auf diese Weise könnte das Schema auch wiederverwendbar machen, wenn es verschiedene Sammlungen mit demselben Schema gibt. – Kevin

4

Ja, manchmal spalte ich das Schema in separate Dateien und mache so etwas.

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

Es ist nur wirklich nützlich, wenn Sie eine Reihe von statischen und anderen Methoden auf Modellen haben und die Hauptmodelldatei wird chaotisch.

+0

Wenn du das getan hast: 'var ArticleSchema = erfordern ("./ ArticleSchema"); var Artikel1 = mongoose.Model ("Article1", ArticleSchema); var Artikel2 = mongoose.Model ("Article2", ArticleSchema); ' Wie würden Sie diese Sammlungen in eine andere Datei importieren/benötigen?' '' – morgs32