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();