首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于Param名称条件创建一个JOI模式验证,以确定相应的架构

基于Param名称条件创建一个JOI模式验证,以确定相应的架构
EN

Stack Overflow用户
提问于 2021-09-28 04:35:00
回答 1查看 766关注 0票数 1

根据param名称创建一个Joi验证,以选择要验证的对应模式

不是Hapi/Joi

这些参数要么是contract-associateintern-associateseasonal-associate 全职,要么是

这些模式附在下面

代码语言:javascript
复制
var associate = Joi.object().keys({
    Job_title: Joi.string().required(),
    work_information: Joi.object().keys({
        Full_Name: Joi.string().required(),
        Email_Address: Joi.string().required(),
        phone_number: Joi.string().required(),
        company_Name: Joi.string().required(),
        manager_information: Joi.string().required(),
        gender: Joi.string().required(),
        Date_of_Birth: Joi.string().required(),
        manager_information: Joi.string().required(),
    })
});

var intern = Joi.object().keys({
    Job_title: Joi.string().required(),
    work_information: Joi.object().keys({
        Full_Name: Joi.string().required(),
        Email_Address: Joi.string().required(),
        phone_number: Joi.string().required(),
        company_Name: Joi.string().required(),
        manager_information: Joi.string().required(),
        gender: Joi.string().required(),
        Date_of_Birth: Joi.string().required(),
        manager_information: Joi.string().required(),
        university_name: Joi.string().required(),
        date_of_graduation: Joi.string().required(),
    })
});

var contractor = Joi.object().keys({
    Job_title: Joi.string().required(),
    work_information: Joi.object().keys({
        Full_Name: Joi.string().required(),
        Email_Address: Joi.string().required(),
        phone_number: Joi.string().required(),
        consulting_agency: Joi.string().required(),
    })
});

var seasonal = Joi.object().keys({
    Job_title: Joi.string().required(),
    work_information: Joi.object().keys({
        Full_Name: Joi.string().required(),
        Email_Address: Joi.string().required(),
        phone_number: Joi.string().required(),
        duration_of_employment: Joi.string().required(),
        manager_information: Joi.string().required(),
    })
});

以下是我所拥有的

代码语言:javascript
复制
var createAssociateProfile = Joi.object({
params: Joi.object({
    name: Joi.string().valid('full-time', 'contract-associate', 'intern-associate', 'seasonal-associate' ).required()
}),
body: Joi.object({
    Job_title: Joi.string().required(),
    work_information: Joi.object().required().when('params.name', 
            { is: 'full-time', then: associate },
            { is: 'contract-associate', then: intern},
            { is: 'intern-associate', then: contractor},
            { is: 'seasonal-associate', then: seasonal},
    )
})

});

EN

回答 1

Stack Overflow用户

发布于 2021-09-28 12:41:33

通过使用.when('params.name'),您将引用到work_information对象中的对等方。

要引用第一个params对象,您应该执行以下操作:

代码语言:javascript
复制
.when('...params.name')

...是对祖父母的引用.

以下是有关相关参考的更多详细信息:

https://github.com/sideway/joi/blob/master/API.md#relative-references

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69355856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档