如何在mongoose模式中创建一个不是数组的子模式

时间:2014-01-02 22:02:42

标签: mongoose

我有一个mongoose模式,里面有4个子模式。我一直关注嵌入式文档中的文档https://github.com/LearnBoost/mongoose

var scenarios = new Schema({
    title: 'String',
    type: 'String',
    description:  'String',
    authorId:  'String',
    categories:  [categoriesSchema],
    subcategories: [subcategories_schema],
    presentation: [presentations_schema],
    scripts: [scripts_schema],
    revision: 'String',
    createDate: 'String',
    updateDate: 'Date',
    active: 'Boolean',
    display:  'Boolean',
    status: [statusSchema],
    video: [video_schema],
    bundleId: [bundleSchema],
    sortOrder: 'Number'
});

我的问题是,例如,如果我不希望演示文稿是一个数组,并且只想在每个方案中允许1个表示,那么有没有办法在模式定义上处理它?<​​/ p>

2 个答案:

答案 0 :(得分:1)

如果不声明数组,则无法嵌入模式对象,但是您可以将表示模式定义为普通的javascript对象(而不是模式实例):

var presentations_schema = {
    your_field: {type: String, required: true} // etc
}

然后你可以这样做:

presentation: presentations_schema

http://mongoosejs.com/docs/guide.html中,请参阅第一个示例中的元字段。

答案 1 :(得分:1)

如果“ presentation”是子模式,则假设是这样的:

var presentation_schema = new Schema ({
name:{
     type: String,
     }
});

,您希望它只应在主模式中出现一次,而不是将其嵌入到这些方括号[]内,它们表示数组或列表,您可以这样表示

演示:presentation_schema