繁体   English   中英

如何以最佳方式验证joi子模式

[英]how to validate joi sub-schema in best way

是否可以验证joi模式而不会发生转换错误? 即我有N个字段,但我只想验证1个字段。

我尝试了2种方法,如下所示:

const Joi = require("joi");
const _ = require('lodash');
const testSchema = Joi.object().keys({
    name: Joi.string().trim().min(5).max(25).required(),
    allowed: Joi.number().integer().min(0).max(1).default(0)
});

// works smoothly; no error
// const {error, value} = Joi.validate({name :"abc", allowed: 1}, testSchema);

// (Way 1) --> Error: "value" must be a number
// const {error, value} = Joi.validate({name :"abc", allowed: 1}, Joi.reach(testSchema, 'allowed'));

// (Way 2) --> Error: "value" must be a number
const {error, value} = Joi.validate({name :"abc", allowed: 1}, _.find(testSchema._inner.children, {key: 'allowed'}).schema);

console.log(error);

PS我知道从较小的架构组成最终架构的第三种方法,但我不想这么做。

除了传递键值对象外,还可以传递键值,例如:

Joi.validate(1, Joi.reach(testSchema, 'allowed'));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM