是否可以验证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);
P.S。我知道第3 种方法可以从较小的架构中构成最终架构,但我不想这么做。
答案 0 :(得分:0)
不是传递键值对象,而是传递键的值,例如:
Joi.validate(1, Joi.reach(testSchema, 'allowed'));