繁体   English   中英

如何在subschema Meteor js 1.8中声明simpleschema或

[英]How to declare simpleschema OR within subschema Meteor js 1.8

在我的数据模式中,我想在一个对象中有一个嵌套对象。 嵌套对象也应经过验证,但能够包含不同类型的数据。 因此,对于相同的对象数据,存在多个模式。

要澄清这一点:对象> Object.data> [DataSchema A || 数据模式B || DataSchema C]。 在Object:Object.Type中有一个变量,它对应于应使用的数据模式。

如何将正确的嵌套模式应用于对象。

我试图用谷歌搜索问题和功能,如果没有,似乎没有为此提供功能。 现在,我的解决方案是使子方案中的每个变量都是可选的,但这是一个丑陋的解决方案。

export const DataSchema1 = ({ /* some variables */ });
export const DataSchema2 = ({ /* some different variables */ });
export const DataSchema3 = ({ /* some different variables */ });

export const DataSchema = [
       DataSchema1,
       DataSchema2,
       DataSchema3
];


export const ObjectSchema = new SimpleSchema({
        objectType: {
            // Actually is enum, to verify options. Not relevant.
             type: String
        },
        data: {
            type: DataSchema
        }

});

期望能够调用流星检查功能来验证此架构的对象。 基于类型变量,或者将或应用于DataSchema数组。

预先谢谢你们! 第一个stackoverflow帖子。

欢迎来到StackOverflow!

SimpleSchema有一个名为oneOf助手 ,它使您可以将类型组合在一起:

export const ObjectSchema = new SimpleSchema({
    objectType: {
        // Actually is enum, to verify options. Not relevant.
         type: String,
         allowedValues: [/* you can put your enum values here */]
    },
    data: {
        type: SimpleSchema.oneOf([DataSchema1, DataSchema2, DataSchema3])
    }
});

暂无
暂无

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

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