【问题标题】:tcomb - validation error message custom formattingtcomb - 验证错误消息自定义格式
【发布时间】:2017-03-31 01:30:52
【问题描述】:

目前我有一个t.Number 字段。

当我在上面调用t.validate() 时,它给了我以下result.errors

{
    "actual": "James King", 
    "message": "Invalid value \"James King\" supplied to /user_id: Number",
    "path": ["user_id"]
}

是否可以将t.Number 验证的输出修改为:

{
    "actual": "James King", 
    "message": "Oops! The value is invalid", 
    "path": ["user_id"]
}

另外,我得到results.errors 是因为我在NODE_ENV“开发”吗?如果是这样,如果我处于“生产”状态,我会得到什么 results.errors?

【问题讨论】:

    标签: tcomb


    【解决方案1】:

    我终于明白了。

    根据:https://github.com/gcanti/tcomb-validation#customise-error-messages

    将 getValidationErrorMessage() 函数附加到“类型”。 即

    Number.getValidationErrorMessage = (value, path, context) => {
      return '"'+value+'" is invalid. It must be a number.';
    }
    

    然后调用 tcomb-validate 的 validate():

    const result = t.validate('s', Number);

    它给出了带有自定义错误消息的结果:

    result Struct {
      errors: 
       [ Struct {
           message: '"s" is invalid. It must be a number.',
           actual: 's',
           expected: [Object],
           path: [] } ],
      value: 's' }
    

    【讨论】: