我在Mongoose中使用Schema作为Subdocument,但我无法在其字段中验证它。
这就是我所拥有的
var SubdocumentSchema = new Schema({
foo: {
type: String,
trim: true,
required: true
},
bar: {
type: String,
trim: true,
required: true
}
});
var MainDocumentSchema = new Schema({
name: {
type: String,
trim: true,
required: true
},
children: {
type : [ SubdocumentSchema.schema ],
validate: arrayFieldsCannotBeBlankValidation
}
});
我想确保子文档的每个字段都不为空 我发现用标准方法验证数组是不可能的,所以我写了自定义验证函数。 到现在为止,我必须手动检查所有字段是否正确而不是空,但它看起来像是一个不太可扩展的解决方案,所以我想知道是否有一些本机方法从MainDocument触发Subdocument验证。
答案 0 :(得分:4)
在children
的定义中,它应该是[SubdocumentSchema]
,而不是[SubdocumentSchema.schema]
:
var MainDocumentSchema = new Schema({
name: {
type: String,
trim: true,
required: true
},
children: {
type : [ SubdocumentSchema ],
validate: arrayFieldsCannotBeBlankValidation
}
});
SubdocumentSchema.schema
评估为undefined
因此,在您当前的代码中,Mongoose没有必要的类型信息来验证children
的元素。