Node.js 如何在mongoose中的数组中使用不同类型的模式?

Node.js 如何在mongoose中的数组中使用不同类型的模式?,node.js,mongodb,mongoose,schema,Node.js,Mongodb,Mongoose,Schema,我有这个模式: var UserSchema = new Schema({ documento: [] }); 这类文件: var RgSchema = new Schema({ tipo: 'RG', numero: stringType(), orgaoEmissor: stringType(), dataExpedicao: dateType() }); var CpfSchema = new Schema({ tipo: 'CPF',

我有这个模式:

var UserSchema = new Schema({
    documento: []
});
这类文件:

var RgSchema = new Schema({
    tipo: 'RG',
    numero: stringType(),
    orgaoEmissor: stringType(),
    dataExpedicao: dateType()
});

var CpfSchema = new Schema({
    tipo: 'CPF',
    numero: stringType()
});
如何在
文档中设置不同类型的模式(RgSchema或CpfSchema):[]

一种是这样的:

documento: [RgSchema || CpfSchema]

我不认为你能在当前版本的猫鼬中做到这一点。我建议您使用
tipo
as
enum
为这两个选项提供一个通用的模式

var CommonSchema = new Schema({
    tipo: {type:String, enum: ['RG', 'CPF']}
    numero: stringType(),
    orgaoEmissor: stringType(),
    dataExpedicao: dateType()
});
另一种选择是对不同的模式使用不同的
ref

 var UserSchema = new Schema({
        documenRG: [],
        documenCPF: []

    });

我将使用第二个选项,因为在我的情况下,CPF没有此属性
orgaoEmissor:stringType(),dataExpedicao:dateType()
。谢谢你的帮助!如果数组元素(具有混合类型)的顺序很重要,如何使用第二个选项?@Tom用户模式包含一个“documento”数组,它可能如下所示:
[{RGref:{…},CPFref:null},{RGref:null,CPFref:{…},{RGref:{…},CPFref:null}
。@Jayram的答案中的“UserSchema”或“CommonSchema”有助于实现这一点。我们能不能在最新的mongoose版本^5.3.20中简单地编写此文档o:[RgSchema | | CpfSchema]。。这将是最简单和最自我的解释。我有一个完全相同的问题->…有人能帮我吗?