在自定义Joi /庆祝消息上使用验证错误值

时间:2020-06-06 18:47:28

标签: node.js typescript validation joi

我正在使用服务器的nod​​ejs / typescript堆栈创建某些内容,并且尝试定义自定义的通用错误消息,而不是按字段的消息。像这样:

> 0

如您所见,我正在尝试在自定义消息中使用变量/值。我是根据celebration / joi错误中出现的错误条目获得“键”的,就像这样:

routes.post(
    '/points',
    upload.single('image'), 
    celebrate({
        body: Joi.object().keys({
            name: Joi.string().required(),
            email: Joi.string().required().email(),
            whatsapp: Joi.number().required(),
            latitude: Joi.number().not(0).required(),
            longitude: Joi.number().not(0).required(),
            city: Joi.string().required(),
            uf: Joi.string().required().max(2),
            items: Joi.string().required()
        }),
    }, {
        abortEarly: false,      
        messages: {
            'string.empty':'{context.label} cant be empty!'
        }
    }),
    pointsController.create
);

是否可以做类似的事情? 该消息没有像我那样“解析” {context.label}。我的意思是,这是在黑暗中拍摄的照片,因为即使这样的东西得到了支持,我也找不到任何地方。

1 个答案:

答案 0 :(得分:2)

您可以使用{#label}实现您想要的目标。

尝试:

.messages({
  'string.empty': '{#label} cant be empty!',
  'any.required': '{#label} is a required field for this operation'
})

,对于所有其他类型,依此类推。

也可以类似地访问其他值。例如,如果要概括字符串min / max的错误消息:

.messages({
  'string.min': '{#label} should have a minimum length of {#limit}'
})

在这里,为字符串创建架构时设置了限制(最小值)。