【问题标题】:How to update a schema object, after creation, inside a Joi object?创建后如何在 Joi 对象内更新模式对象?
【发布时间】:2022-06-15 17:37:12
【问题描述】:

不确定表达问题的最佳方式,但这是我正在尝试做的一个示例。

const schema = Joi.Object().keys({
   array: Joi.array().length(5)
});

然后在创建后我想将长度方法更新为不同的数字。

this.schema.keys({ array: Joi.array().length(8) });

上面的代码不起作用,我真的不知道还能尝试什么。 (这不是我唯一尝试过的,只是我目前所处的位置)我一直在查看文档,但没有发现任何有助于更新架构的东西。也许有人知道这样做的方法?

任何帮助将不胜感激!

【问题讨论】:

    标签: javascript reactjs validation joi


    【解决方案1】:
    const Joi = require('joi');
    
    ////
    // update schema itself.
    ////
    let scheme = Joi.object().keys({
      foo: Joi.array().length(5),
    });
    
    const a1 = scheme.validate({ foo: [1,2,3,4,5] });
    console.log(a1.error); // undefined. valid.
    
    scheme = scheme.keys({
      foo: Joi.array().length(8),
    });
    
    const a2 = scheme.validate({ foo: [1,2,3,4,5] });
    console.log(a2.error); // array.length error occurred.
    
    const a3 = scheme.validate({ foo: [1,2,3,4,5,6,7,8] });
    console.log(a3.error); // undefined. vaild.
    
    ////
    // using base scheme.
    ////
    const base = Joi.object().keys({
      foo: Joi.array(),
    });
    
    const base_a = base.keys({
      foo: Joi.array().length(5),
    });
    console.log('Using base a1', (base_a.validate({ foo: [1,2,3,4,5]})).error);
    
    const base_b = base.keys({
      foo: Joi.array().length(8),
    });
    console.log('Using base a2', (base_b.validate({ foo: [1,2,3,4,5]})).error);
    console.log('Using base a3', (base_b.validate({ foo: [1,2,3,4,5,6,7,8]})).error);
    
    ////
    // Not good but works.
    ////
    const obj = Joi.object({
      foo: Joi.array().length(5),
    });
    console.log('Obj a1', (obj.validate({ foo: [1,2,3,4,5]})).error);
    
    const merged = Object.assign(obj, Joi.object({
      foo: Joi.array().length(8),
    }));
    
    console.log('Obj a2', (merged.validate({ foo: [1,2,3,4,5]})).error);
    console.log('Obj a3', (merged.validate({ foo: [1,2,3,4,5,6,7,8]})).error);
    

    【讨论】:

      猜你喜欢
      • 2021-05-21
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多