首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌套的Joi验证不能使用when

是指在使用Joi库进行数据验证时,无法使用when方法来实现嵌套的条件验证。

Joi是一个流行的Node.js库,用于数据验证和模式描述。它提供了一组强大的验证规则和方法,可以帮助开发人员确保输入数据的完整性和正确性。

在Joi中,when方法用于根据条件动态地应用验证规则。它允许我们根据某个字段的值来决定是否应用特定的验证规则。然而,当涉及到嵌套的验证时,即在一个对象或数组中进行条件验证时,Joi的when方法无法直接应用于嵌套的字段。

为了解决这个问题,可以使用Joi的alternatives方法来实现嵌套的条件验证。alternatives方法允许我们定义多个验证规则,并根据条件选择其中一个规则进行验证。

以下是一个示例,演示了如何使用alternatives方法实现嵌套的条件验证:

代码语言:txt
复制
const Joi = require('joi');

const schema = Joi.object({
  nestedField: Joi.alternatives().conditional('field', {
    is: 'value',
    then: Joi.object({
      nestedField2: Joi.string().required()
    }),
    otherwise: Joi.object({
      nestedField3: Joi.number().required()
    })
  })
});

const data = {
  field: 'value',
  nestedField: {
    nestedField2: 'example'
  }
};

const result = schema.validate(data);
console.log(result);

在上面的示例中,我们定义了一个包含嵌套字段的验证规则。根据条件'field'的值是否为'value',我们选择应用不同的验证规则。如果条件满足,则验证nestedField中的nestedField2字段为必需的字符串。否则,验证nestedField中的nestedField3字段为必需的数字。

这是一个简单的示例,演示了如何使用Joi的alternatives方法来实现嵌套的条件验证。根据实际需求,可以根据Joi的文档和规范来定义更复杂的验证规则。

关于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供腾讯云的相关产品和链接。但你可以通过访问腾讯云的官方网站,查找他们提供的云计算服务和相关产品,以满足你的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用joi验证数据模型

我们用nodejs实现一些功能时,往往需要对用户输入数据进行验证。...然而,验证是一件麻烦事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用做法是使用正则,正则表达式也许可以一步到位,但是他只会给你true or false,如果想要知道数据不符合哪些条件时...Joi 是 hapijs 自带数据校验模块,已经高度封装常用校验功能,本文就是介绍如何优雅地使用 joi 对数据进行校验。相信你会喜欢上他。...'a', 'b']).validate('b'); // pass Joi.number().allow('a').validate(3); // pass 不能是数字5: Joi.number...也可以使用正则: Joi.object({ password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/) }); 在 hapijs 中使用Joi hapijs

2.6K00

使用joi验证数据模型

大家好,又见面了,我是你们朋友全栈君。 我们用nodejs实现一些功能时,往往需要对用户输入数据进行验证。...然而,验证是一件麻烦事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用做法是使用正则,正则表达式也许可以一步到位,但是他只会给你true or false,如果想要知道数据不符合哪些条件时...Joi 是 hapijs 自带数据校验模块,他已经高度封装常用校验功能,本文就是介绍如何优雅地使用 joi 对数据进行校验。相信你会喜欢上他。...'a', 'b']).validate('b'); // pass Joi.number().allow('a').validate(3); // pass 不能是数字5: Joi.number...也可以使用正则: Joi.object({ password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/) }); 在 hapijs 中使用Joi hapijs

1.1K10
  • 使用joi验证数据模型

    本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载 我们用nodejs实现一些功能时,往往需要对用户输入数据进行验证。...然而,验证是一件麻烦事情,很有可能你需要验证数据类型,长度,特定规则等等,在前端做表单验证时,我们常用做法是使用正则,正则表达式也许可以一步到位,但是他只会给你true or false,如果想要知道数据不符合哪些条件时...Joi 是 hapijs 自带数据校验模块,他已经高度封装常用校验功能,本文就是介绍如何优雅地使用 joi 对数据进行校验。相信你会喜欢上他。...'a', 'b']).validate('b'); // pass Joi.number().allow('a').validate(3); // pass 不能是数字5: Joi.number...也可以使用正则: Joi.object({ password: Joi.string().regex(/^[a-zA-Z0-9]{3,30}$/) }); 在 hapijs 中使用Joi hapijs

    1.2K50

    playbook中when使用

    背景 在使用ansible编写playbook过程中,我们发现在安装某服务时,例如部署fastdfs分布式存储时,有的机器需要启动tracker和storage两个服务,有的机器只需要启动一个服务即可...,它们需要配置不同,我们要根据不同机器来做不同判断,来分发不同配置文件,这时就会用到when来做判断了,并且我们还要使用jinja2循环条件控制语句,还要在ansible清单文件中设置好变量...become: true 我们在日常部署中,这种使用方法能帮我们大大提高playbook执行效率 针对不同主机来做判断,如果满足条件,则执行任务,不满足直接略过 - name: Copy...,when执行判断是当fdfs_role为tracker时,才去执行此任务,简而言之就是满足条件才会执行,这对我们非常有用,例如在部署mysql集群时,我们需要对数据库执行授权操作,当然,授权操作主库和从库都要进行...115 [master] 10.0.3.150 [master:vars] mysql_db_role=master [slave:vars] mysql_db_role=slave 后面遇到其他使用方法再补充吧

    64230

    关于p标签不能嵌套div标签引发标签嵌套问题总结

    问题由来:中嵌套标签,两个都是块级元素,按理应该可以正常显示,但是最后结果居然是多出来一段效果,所以就在网上找了许多关于标签嵌套规则资料,下面做一个个人总结。...,不可以嵌套块状元素 2,块元素,可以嵌套块元素,或者是内联元素 3,部分块元素,不能嵌套块元素,只能嵌套内联元素,如:p、h1-h6 4, 块元素中嵌套元素,块元素和块元素一级,内联元素和内联元素一级...>   正确  (块级嵌套块级)      正确   (块级嵌套内联) 有几个特殊块级元素只能包含内嵌元素,不能再包含块级元素...所以说p里面不能嵌套div,就是我犯错误。     ... 错误  (特殊块级标签只能嵌套内联标签)          错误  (特殊块级标签只能嵌套内联标签) 块元素中嵌套元素

    2.8K30

    mybatis嵌套查询使用

    大家好,又见面了,我是你们朋友全栈君 在使用mybatis时,当我们遇到表与表之之间存在关联时候,就可以使用嵌套查询 比如说 当一个对象包含了另一个对象 /** * 公交实体类中包含了司机信息和路线信息...String topenString; private String tcloseString; //省略封装方法 } 当一个对象中包含了另外一个对象时,在resultMap中就可以使用嵌套查询...附上一个查询结果debug 从图中也是可以看出Bus中Way对象是有数据,并且Way中泛型集合stations也是有数据,这是因为子查询中结果集也配置了嵌套查询,所以相对于嵌套了两次...~ 如果使用多个嵌套需要额外注意,在多对多情况下,切勿嵌套死循环了,不然就尴尬了~233 需要嵌套对象还是集合就根据自己需求来了,注意单个对象是association、集合是collection...(属性在代码中有说明) 还有一个点需要注意就是:如果配置了嵌套了,在原查询语句中就不要查嵌套表了,只查原表中就行~不然就会出错——切记切记 传递多个参数 如果嵌套查询需传递多个参数 <resultMap

    2.3K20

    使用JSON Schema来验证接口数据

    如果之前看我写使用joi验证数据模型》 可能会问,为什么不使用JOI,反而使用JSON Schema?...因为JOI这个nodejs库,除了验证格式,还带有验证字段关系功能,库体积相对庞大,而且对于含有嵌套格式JSON,用JOI来编写验证配置,极为繁琐。...如果还嫌编写Shema麻烦,哪位高手来写一个根据JSON自动生成JSON Schema工具。 DOJO已提供了JSON Schema来验证接口数据功能: dojo其实早已经这样干,我们可以借鉴。...dojo json schema验证模块来验证 var result = dojox.json.schema.validate(users, schema)...如果我们要打造一个像dojo这样json schema验证工具,除了validate功能,最好还会有一个fill功能,用于自动填充缺失字段。 相关资料 JSON Schema 规范

    2.1K10

    解决Scrollview 嵌套recyclerview不能显示,高度不正常问题

    我们先看一个效果,问题说就是中间Grid效果在Scrollview 嵌套recyclerview显示问题,在Android Api 24是好,不过在5,1,1版本(api 22)缺出现了问题 最近项目中...,有一个商品详情页面,页面有好几个网格页面,大家说,我们大可以用GridView去做,但是需要方要求是,我们网格中间线怎么做呢,对于GridView,我们知道我们可以这是一个背景,然后用verticalSpacing...以前在ScrollView中嵌套嵌套ListView,无法正确计算ListView大小,现在我们在ScrollView中嵌套嵌套RecycleView时候,也出现了计算不出高度问题,于是有人想到我们是不是可以自己实现一个重写一个继承自...RecycleView类,重写OmMeasure,呵呵,但是实际上这是不行,RecycleView是具体一个控件,不相同与我们ListView,这里参照之前网上解决方案,我们可以继承自GridManager...mDivider.getIntrinsicWidth(), mDivider.getIntrinsicHeight()); } } } 好了,最后我们在使用时候

    3.3K50

    一文简述如何使用嵌套交叉验证方法处理时序数据

    具体来说,我们解决了以下问题: 1)在不造成数据泄露情况下,对时序数据进行分割;2)在独立测试集上使用嵌套交叉验证得到误差无偏估计;3)对包含多个时序数据集进行交叉验证。 ?...为了解决这个问题,我们使用了一种叫做嵌套交叉验证(Nested Cross-Validation)方法。嵌套交叉验证包含一个用于误差估计外循环,以及一个用于调参内循环(如图 2 所示)。...图 4:日前向链嵌套交叉验证 注意,在这个例子中我们使用「日」前向链,但是也可以在每个数据点上进行迭代,而不是按天迭代(但这明显意味着更多拆分)。...同样,我们使用两种方法: 常规(regular) 「常规」嵌套交叉验证(regular nested cross-validation)训练集/验证集/测试集分割基本思路和之前描述是一样。...总结 我们首先回顾了交叉验证,并列举了使用嵌套交叉验证基本原理。然后讨论了如何在不造成数据泄漏情况下分割单个时间序列数据,具体提出了两种方法:预测后一半嵌套交叉验证和日前向链嵌套交叉验证

    1.4K30

    使用JSON Schema来验证接口数据

    最近在做一些关于JSON Schema基建,JSON Schema可以描述一个JSON结构,那么反过来他也可以来验证一个JSON是否符合期望格式,于是我想到之前lqlong 之前一篇 《数据字段防卫探索...如果之前看我写使用joi验证数据模型》 可能会问,为什么不使用JOI,反而使用JSON Schema?...因为JOI这个nodejs库,除了验证格式,还带有验证字段关系功能,库体积相对庞大,而且对于含有嵌套格式JSON,用JOI来编写验证配置,极为繁琐。...dojo json schema验证模块来验证 var result = dojox.json.schema.validate(users, schema)...如果我们要打造一个像dojo这样json schema验证工具,除了validate功能,最好还会有一个fill功能,用于自动填充缺失字段。 相关资料 JSON Schema 规范

    2.3K60

    教程 | 一文简述如何使用嵌套交叉验证方法处理时序数据

    具体来说,我们解决了以下问题: 1)在不造成数据泄露情况下,对时序数据进行分割;2)在独立测试集上使用嵌套交叉验证得到误差无偏估计;3)对包含多个时序数据集进行交叉验证。 ?...为了解决这个问题,我们使用了一种叫做嵌套交叉验证(Nested Cross-Validation)方法。嵌套交叉验证包含一个用于误差估计外循环,以及一个用于调参内循环(如图 2 所示)。...图 4: 日前向链嵌套交叉验证 注意,在这个例子中我们使用「日」前向链,但是也可以在每个数据点上进行迭代,而不是按天迭代(但这明显意味着更多拆分)。...同样,我们使用两种方法: 常规(regular) 「常规」嵌套交叉验证(regular nested cross-validation)训练集/验证集/测试集分割基本思路和之前描述是一样。...总结 我们首先回顾了交叉验证,并列举了使用嵌套交叉验证基本原理。然后讨论了如何在不造成数据泄漏情况下分割单个时间序列数据,具体提出了两种方法:预测后一半嵌套交叉验证和日前向链嵌套交叉验证

    1.1K30
    领券