如何在子模式 Meteor js 1.8 中声明简单模式 OR



在我的数据架构中,我希望在对象中有一个嵌套对象。嵌套对象也应该经过验证,但能够包含不同类型的数据。因此,对于相同的对象数据,有几个架构。

为了澄清这一点: 对象> 对象.数据> [数据架构 A ||数据架构 B ||数据架构 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
}
});

期望能够调用 meteor check 函数来验证此架构的对象。基于类型变量或将 or 应用于数据架构数组。

提前谢谢你们!第一个堆栈溢出帖子。

欢迎来到 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])
}
});

最新更新