为什么以这种方式设计猫鼬?

时间:2012-04-11 15:08:08

标签: node.js mongodb model mongoose odm

我是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”吗?

2 个答案:

答案 0 :(得分: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 :(得分:4)

是的,有时我将Schema分成单独的文件并执行此类操作。

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

当你在模型上有一堆静态和其他方法并且主模型文件变得混乱时,它才真正有用。