在mongoose中设置模式中的嵌入对象

时间:2016-06-21 13:49:41

标签: node.js mongodb mongoose

哪种方式是正确的?有什么区别?

var UserSchema = new Schema({
    "name": {type: String, unique: true },
    "password": String,
    "tasks": [
        new Schema({
            "name": String,
            "importance": String,
            "completed": Boolean
        })
    ]
})


var Schema = mongoose.Schema;

var UserSchema = new Schema({
    "name": {type: String, unique: true },
    "password": String,
    "tasks":[{//push objects in the array}]
})

如果我是第一种方式,那么Schema会为任务添加一个_id吗?

1 个答案:

答案 0 :(得分:0)

Subdocuments docs

var childSchema = new Schema({ name: 'string' });

var parentSchema = new Schema({
  children: [childSchema]
})

替代语法:

var parentSchema = new Schema({
  children: [{ name: 'string' }]
})

这些是等效的。第一个优点是您可以稍后访问您的模式实例(通过将其保存到变量)。

在您的情况下,在第一个选项中,您不需要new Schema(),这是隐含的。

如果您不想自动生成ID,可以在架构选项中设置_id:false