验证Mongoose中的子文档

时间:2014-07-23 17:32:26

标签: node.js mongodb validation mongoose

我在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验证。

1 个答案:

答案 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的元素。