猫鼬:模式中的重复对象

Mongoose: Repeated object in schema

我在 mongoose 中定义我的模式,我有一个书籍对象数组,然后是一个 "active book"。现在设置它不是问题,但是在模式的两个不同部分定义完全相同的书对象似乎是不必要的重复。

 var BookSchema   = new Schema({
    activeBook: {
        id: String,
        title: String,
        author: String,
        pages: Number
    },
    books: [{
        id: String,
        title: String,
        author: String,
        pages: Number
    }]
});

是否有更简洁的编写方式,这样我就不必在使用它的所有地方都写出相同的对象?

一种更简洁的方法是创建一个 subdocument,一个具有自己架构的文档,该架构是父文档数组的元素。因此,在上面的示例中,您可以按如下方式定义 child/parent 架构:

var ChildSchema = new Schema({
    id: String,
    title: String,
    author: String,
    pages: Number
});

var ParentSchema = new Schema({
    activeBook: ChildSchema,
    books: [ChildSchema]
});