Joi 根据空或非空值验证字符串

问题描述 投票:0回答:1

我对名为 store_type 的字段进行了以下 Joi 验证

store_type: Joi.string().valid(...Object.values(storeTypes))
 .error(() => ({
    message: `Store Type must be one of: ${Object.values(storeTypes).join(', ')}`,
 })).default(storeTypes.aaa),

其中 storeTypes 定义为

storeTypes: {
 aaa: 'AAA',
 bbb: 'BBB'
}

根据上述验证,我期望的是

  • 当我不传递 store_type 的值时,它应该默认将该值设置为
    AAA
  • 如果我传递一个空字符串或非空字符串,那么它应该检查是否是
    AAA
    BBB
    ,如果不是,那么它应该失败并出现上述错误

可以对上述代码进行哪些更改,使其按照我的要求工作。

提前致谢

javascript node.js validation mongoose-schema joi
1个回答
0
投票

我自己尝试过,必须使用您要添加的自定义错误消息来修改错误消息

    store_type: Joi.string()
      .valid(...Object.values(storeTypes))
      .error((err) => {
        err[0].message = `Store Type must be one of: ${Object.values(storeTypes).join(', ')}`
        return err;
      })
      .default(storeTypes.aaa)
© www.soinside.com 2019 - 2024. All rights reserved.