返回介绍

验证错误

发布于 2024-08-14 01:17:13 字数 10207 浏览 0 评论 0 收藏 0

在验证失败的情况下,Ajv 将错误数组分配各验证函数的errors属性(或在调用validatevalidateSchema方法时分配给Ajv实例的errors属性)。在异步验证的情况下,返回拥有errors属性的Ajv.ValidationError错误的 rejected Promise。

错误对象

每个错误对象都拥有下面的属性:

属性描述
keyword验证关键词
dataPath已验证的那部分数据的路径。默认情况下dataPath使用 JavaScript 的属性访问(如 ".prop[1].subProp")。当jsonPointerstrue时,dataPath将使用 JSON 指针标准进行设置(如 "/prop/1/subProp")
schemaPath验证失败的关键字的 schema 的路径(JSON 指针作为 URI 片段)。
params带有关于错误的附加信息的对象,可用于创建自定义错误消息(例如,使用ajv-i18n包)。请参阅下面所有关键字设置的参数。
message标准错误消息(可以通过将配置项messages设置为false来排除)。
schema关键字的 schema (使用verbose配置项添加)。
parentSchema包含关键字的 schema (使用verbose配置项添加)。
data通过关键字验证数据(使用verbose配置项添加)。

::: tip 请注意 propertyNames关键字 schema 验证错误拥有指向对象的附加属性propertyNamedataPath。对每个属性名进行 schema 验证之后,如果无效,则会添加一个附加错误,其keyword属性和propertyName相等。 :::

错误参数

错误中的params对象的属性取决于验证失败的关键字。

  • maxItemsminItemsmaxLengthminLengthmaxPropertiesminProperties —— limit属性(关键字的 schema,数字类型)。
  • additionalItems —— limit属性(如果items关键字是 schema 数组且additionalItemsfalse,则允许的最大项数量)。
  • additionalProperties —— additionalProperty属性(该属性并未在propertiespatternProperties关键字中使用)。
  • dependencies - 属性:
    • property(依赖属性)。
    • missingProperty(所需缺少的依赖项 —— 目前只报告第一个)。
    • deps(所需的依赖,用逗号分隔的字符串列表)。
    • depsCount(所需依赖数)。
  • format —— format属性(关键字的 schema)。
  • maximumminimum —— 属性:
    • limit(关键字的 schema,数字类型)。
    • exclusive(exclusiveMaximumexclusiveMinimum的 schema,布尔类型)。
    • comparison(比较运算,将位于左侧的数据与位于右侧限制条件进行比较;可以为"<""<="">"">="、字符串类型)。
  • multipleOf - multipleOf属性(关键字的 schema)。
  • pattern - pattern(关键字的 schema)。
  • required - missingProperty属性(缺失的属性)。
  • propertyNames - propertyName属性(无效的属性名称)。
  • patternRequired - (ajv-keyword 中的)missingPattern属性(不匹配任何属性的必需通配符)。
  • type - type属性(所需的类型,用逗号分隔的字符串列表)。
  • uniqueItems - ij属性(重复的索引项)。
  • const - allowedValue属性指向的值(关键字的 schema)。
  • enum - allowedValue属性指向的值的数组(关键字的 schema)。
  • $ref - ref属性引用的 schema URI。
  • oneOf - passingSchemas属性(传入 schema 的索引数组,如果没有传入 schema 则为空)。
  • 自定义关键字(防止关键字定义不会产生错误) - keyword属性(关键字的名称)。

错误日志

在初始化 Ajv 时使用logger配置项将允许您定义自定义日志。这里您可以构建现有的日志。也可以使用其他的日志库,只要该库向外暴露了所需的方法即可。如果缺少所需的方法会抛出异常。

  • 所需的方法:logwarnerror
var otherLogger = new OtherLogger();
var ajv = new Ajv({
  logger: {
    log: console.log.bind(console),
    warn: function warn() {
      otherLogger.logWarn.apply(otherLogger, arguments);
    },
    error: function error() {
      otherLogger.logError.apply(otherLogger, arguments);
      console.error.apply(console, arguments);
    }
  }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文