【问题标题】:Joi override keys nested schemasJoi 覆盖键嵌套模式
【发布时间】:2020-02-14 22:25:48
【问题描述】:

所以我有一个类似的架构

const buttonSchema = Joi.object().keys({
      object: Joi.string().valid('button').required(),
      id: Joi.string().required(),
      text: textSchema.required(),
      icon: Joi.string().uri({
        scheme: 'https'
      }),
      action: actionSchema,
      styles: stylesSchema.required()
    });
const stylesSchema = Joi.object().keys({
      width: Joi.string().pattern(/^[1-9][0-9]?%$|^100%$/).required(),      // 1 - 100 %
      height: Joi.number().positive(),
      position: Joi.string().valid('left', 'center', 'right'),
      align: Joi.string().valid('left', 'center', 'right'),
      default: defaultStylesSchema.required(),
      disabled: defaultStylesSchema.required(),
      pressed: defaultStylesSchema.required()
    });

在另一个文件中,我试图覆盖 buttonSchema.styles.align 属性.. 基本上添加一个 required()..

我尝试了很多变化.. 这是最突出的一个

const reactionsButtonSchema = buttonSchema.keys({
      styles: buttonSchema.styles.keys({
        align: Joi.string().valid('left', 'center', 'right').required(),
      })
    });

但它不起作用..有人知道如何实现这一点吗?

【问题讨论】:

    标签: javascript validation hapijs joi


    【解决方案1】:

    在得到 JOI 的支持响应后,可以使用

    const reactionsButtonSchema = buttonSchema.concat(Joi.object({ styles: { align: Joi.required() }}));
    

    如果其他人面临这个问题,你有答案。

    【讨论】:

      猜你喜欢
      • 2016-08-12
      • 2018-02-20
      • 1970-01-01
      • 2020-06-01
      • 2019-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-14
      相关资源
      最近更新 更多