如何在猫鼬的数组中使用不同类型的模式?
Posted
技术标签:
【中文标题】如何在猫鼬的数组中使用不同类型的模式?【英文标题】:How to use different type of schema in an array in mongoose? 【发布时间】:2014-01-13 12:29:23 【问题描述】:我有这个架构:
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()
);
如何在documento: []
中设置不同类型的架构(RgSchema或CpfSchema)?
一种这样的:
documento: [RgSchema || CpfSchema]
【问题讨论】:
【参考方案1】:我不认为你可以在当前版本的猫鼬中实现这一点。我建议您使用tipo
和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”有助于实现这一点。
我们不能简单地做这个文档吗:[RgSchema || CpfSchema] 在最新的猫鼬版本^5.3.20 ....这将是最简单和最不言自明的
我也有同样的问题 -> ***.com/questions/57788956/… ...谁能帮帮我?以上是关于如何在猫鼬的数组中使用不同类型的模式?的主要内容,如果未能解决你的问题,请参考以下文章