在我的数据模式中,我希望在对象中有一个嵌套对象。嵌套对象也应该经过验证,但能够包含不同类型的数据。因此,同一对象数据有多个模式。
为了澄清这一点: 对象 > 对象.data > [DataSchema A ||数据架构 B ||数据模式 C].对象中有一个变量:Object.Type,它对应于应使用的数据模式。
如何将正确的嵌套架构应用于对象。
我尝试用谷歌搜索这个问题和函数 if's,似乎没有提供这方面的功能。现在我的解决方案是让子模式中的每个变量都是可选的,但这是一个丑陋的解决方案。
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检查函数来验证此模式的对象。基于类型变量或将 or 应用于 DataSchema 数组。
先谢谢各位了!第一篇 stackoverflow 帖子。
最佳答案
欢迎来到 StackOverflow!
SimpleSchema 有一个 helper called 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])
}
});
关于javascript - 如何在子模式 Meteor js 1.8 中声明 simpleschema OR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57772504/