繁体   English   中英

ZCCADCDEDB567ABAE643E15DCF0974E503Z:防止在创建时验证文档

[英]Mongoose: prevent validating document on creation

我有一个 function 用于从传递的参数创建 mongoose 文档。 这些文件在结构上非常相似,只有一些必要的差异。 由于文档非常相似,因此创建具有所有共享属性的文档似乎很有意义,然后根据 model 类型添加其他必需的属性,如下所示:

var parentSchema = new Schema({
    prop_a: { type: String, required: true },
    prop_b: { type: Number, required: true },
    ...
});

const Model1 = mongoose.model('Model1', parentSchema.clone().add({prop_c: {type: String, required: true}}));
const Model2 = mongoose.model('Model2', parentSchema.clone().add({prop_d: {type: Boolean, required: true}}));

var createDocument = async (docmodel, params) => {
    let doc = new docmodel({
        prop_a: params.a,
        prop_b: params.b,
        ...
    });
    if (docmodel === Model1) {
        doc.prop_c = params.c;
    }
    if (docmodel === Model2) {
        doc.prop_d = params.d;
    }
    return await doc.save();
}

但是,mongoose 似乎不仅在save()上验证了文档,而且在创建文档时也验证了该文档。 因为,需要不同的属性,所以如果不创建验证错误,我无法以这种方式创建文档。 如何防止在创建时验证文档,而仅在save()上验证它,或者在这种情况下是否有更简洁的方法来创建文档?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM