【问题标题】: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]

【问题讨论】:

    标签: node.js mongodb mongoose schema


    【解决方案1】:

    我不认为你可以在当前版本的猫鼬中实现这一点。我建议您使用tipoenum 的共同架构。

    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 ....这将是最简单和最不言自明的
    • 我也有同样的问题 -> stackoverflow.com/questions/57788956/… ...谁能帮帮我?
    猜你喜欢
    • 2021-05-31
    • 2021-09-11
    • 2020-10-22
    • 1970-01-01
    • 2020-02-28
    • 2021-09-25
    • 2020-04-22
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多