我是猫鼬的新手,
如果我想定义一个模型,我可以使用以下内容:
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
});
为什么猫鼬是这样设计的?是否有任何情况可以重用"文章架构"?
它以这种方式设计,以便您可以为子文档定义架构,这些子文档不会映射到不同的模型。请记住,集合和模型之间存在一对一的关系。
来自猫鼬网站:
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);
是的,有时我会将架构拆分为单独的文件并做这种事情。
// db.js
var ArticleSchema = require("./ArticleSchema");
mongoose.Model("Article", ArticleSchema);
只有当你在模型上有一堆静态方法和其他方法并且主模型文件变得混乱时,它才真正有用。