2017-03-27 189 views
2

我已經定義了以下貓鼬架構需要子文檔貓鼬

var subSchema = new Schema({ 
    propertySub: {type: String, required: true} 
}); 

var mainSchema = new Schema({ 
    mainProperty: {type: String, required: true}, 
    subs: [subSchema] 
}); 

正如你可以看到有關於subSchema必需的屬性,而問題是,我想一個mainSchema被要求至少有一個subSchema ,但是當我發送一個

{ 
    "mainProperty" : "Main" 
} 

沒有失敗。

我想是這樣

subs: [{ 
    type: subSchema, 
    required: true 
}] 

但它拋出如下:

TypeError: Undefined type undefined at array subs

所以無論如何與validate我是新做這個?也許到節點和貓鼬這樣的解釋會不勝感激

回答

2

是的,你會要麼使用驗證,或者如果你想要使用預存鉤子驗證。這裏有一個使用驗證的例子

var mainSchema = new Schema({ 
    mainProperty: {type: String, required: true}, 
    subs: { 
     type: [subSchema], 
     required: true, 
     validate: [notEmpty, "Custom error message"] 
    } 
}); 

function notEmpty(arr) { 
    return arr.length > 0; 
}