我是mongoose的新手,
如果我想定义一个模型,我可以使用以下内容:
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”吗?
答案 0 :(得分:10)
它的设计方式使您可以为子文档定义一个模式,该模式不会映射到不同的模型。请记住,集合和模型之间存在一对一的关系。
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 :(得分:4)
是的,有时我将Schema分成单独的文件并执行此类操作。
// db.js
var ArticleSchema = require("./ArticleSchema");
mongoose.Model("Article", ArticleSchema);
当你在模型上有一堆静态和其他方法并且主模型文件变得混乱时,它才真正有用。