Mongoose 一个字段具有不同的有效模式,而不使用混合模式

Mongoose 一个字段具有不同的有效模式,而不使用混合模式,mongoose,Mongoose,我有以下情况: var aField1 = new Schema({ //Stuff1 }); var aField2 = new Schema({ //Stuff2 }); var MainSchema = new Schema({ aField: { type: Schema.Types.Mixed, required: true}, }); 我的问题是: a是否可以将“aField1”和“aField2”都定义为“aField”的有效模式?不使用混合 b如果是

我有以下情况:

var aField1 = new Schema({
    //Stuff1
});

var aField2 = new Schema({
    //Stuff2
});

var MainSchema = new Schema({
    aField: { type: Schema.Types.Mixed, required: true},
});
我的问题是:

a是否可以将“aField1”和“aField2”都定义为“aField”的有效模式?不使用混合

b如果是,是否可以验证这两种情况


致以最诚挚的问候

我知道这并不理想,但也许你可以用它来实现这一点,比如:

var aField1Schema = new Schema({});
var aField2Schema = new Schema({});

var MainSchema = new Schema({
  aField: {type: Schema.Types.Mixed, required: true, validate: models(['aField1', 'aField2'])}
});

mongoose.model('aField1', aField1Schema);
mongoose.model('aField2', aField2Schema);
mongoose.model('Main', MainSchema);

function models(possibleModels) {
  return [function(value) {
    return possibleModels.indexOf(value.constructor.name) === 0;
  }, 'validation of `{PATH}` failed with value `{VALUE}`'];
}
然后,要创建文档,可以执行以下操作:

var doc = new Main({});
doc.aField = new aField2({});
doc.save();