条件未按预期工作时的JOI验证

问题描述

我定义了以下JOI模式;

schema = Joi.object({
  flag: Joi.boolean()
    .required(),toolDetail: Joi.array().items(
    Joi.object({
      amount: Joi.number()
        .min(0)
        .max(499.99)
        .precision(2)
        .options({ convert: false })
        .when('flag',{
          is: true,then: Joi.number().required(),otherwise: Joi.number()
            .strip()
            .optional()
            .allow(''),}),tool: Joi.string()
        .min(0)
        .max(500)
        .when('flag',then: Joi.string().required(),otherwise: Joi.string()
            .strip()
            .optional()
            .allow(''),),});

我已经确认标记设置正确,但是无论“标记”中设置的值如何,“金额”和“工具”似乎总是处于其他情况。

我的定义中有不正确的地方吗?

解决方法

我在标志上添加了4个点前缀后,按预期工作

.when('....flag',{ 

https://joi.dev/api/?v=17.2.1#relative-references