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”的情况?

4

2 回答 2

9

它是这样设计的,因此您可以为不映射到不同模型的子文档定义架构。请记住,集合和模型之间存在一对一的关系。

来自猫鼬网站

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);
于 2012-04-11T19:07:51.480 回答
4

是的,有时我将架构拆分为单独的文件并做这种事情。

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

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

于 2012-04-11T15:12:39.783 回答