首页
学习
活动
专区
工具
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

1.1K10

使用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来验证数据模型

    本文作者: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 后面遇到其他的使用方法再补充吧

    65530

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

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

    2.9K30

    mybatis嵌套查询的使用

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

    2.5K20

    解决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.4K50

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

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

    1.4K30

    使用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

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

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

    1.1K30

    使用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
    领券