2016-06-21 41 views
0

哪種方法是正確的?有什麼區別?在貓鼬的架構中設置嵌入對象

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?

回答

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:false