如何使用Joi验证其键应与外部对象匹配的嵌套对象,另一个键的值应为数组? [英] How to validate nested object whose keys should match with outer objects another key whose value is array using Joi?

查看:110
本文介绍了如何使用Joi验证其键应与外部对象匹配的嵌套对象,另一个键的值应为数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有要验证的对象.

// valid object because all values of keys are present in details object
var object = {
    details: {
        key1: 'stringValue1',
        key2: 'stringValue2',
        key3: 'stringValue3'
    },
    keys: ['key1', 'key2', 'key3']
}

// invalid object as key5 is not present in details
var object = {
    details: {
        key4: 'stringValue4'
    },
    keys: ['key4', 'key5']
}

// invalid object as key5 is not present and key8 should not exist in details
var object = {
    details: {
        key4: 'stringValue4',
        key8: 'stringValue8',            
    },
    keys: ['key4', 'key5']
}

keys中存在的所有键也应该存在于details中.

All the keys present in keys should be present in details also.

我尝试使用 Joi.ref() >

var schema = Joi.object({
    details: Joi.object().keys(Object.assign({}, ...Object.entries({...Joi.ref('keys')}).map(([a,b]) => ({ [b]: Joi.string() })))),
    keys: Joi.array()
})

但是这不起作用,因为Joi.ref('keys')将在验证时得到解决.

But this is not working because Joi.ref('keys') will get resolved at validation time.

如何使用 Joi 验证该对象?

推荐答案

使用 object.pattern stackblitz

这篇关于如何使用Joi验证其键应与外部对象匹配的嵌套对象,另一个键的值应为数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆