javascript - 如何在子模式 Meteor js 1.8 中声明 simpleschema OR

标签 javascript meteor simple-schema

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

为了澄清这一点: 对象 > 对象.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/

相关文章:

Meteor 在另一个集合中使用 collection.find()

meteor 错误 : User Not Found

javascript - After Effects 脚本 - 表达式 Controller 坐标

javascript - 为什么函数返回 bool 值?

nginx - Proxy_pass 到带有 Meteor 服务器的 url NGINX

javascript - 可以用 Node 而不是 meteor 启动 meteor 应用程序吗?

javascript - 如何通过 Meteor 中的隐藏字段将 _id 传递给 autoForm?

javascript - TinyMCE - 单击按钮后更改文本字体大小

javascript - 通过复选框以模式从表中获取数据

node.js - 如何解决 "Unable to resolve some modules oracledb"?