NodeJS Ajv 模块总是记录消息'$ref:路径“#”的模式中忽略的关键字'
Posted
技术标签:
【中文标题】NodeJS Ajv 模块总是记录消息\'$ref:路径“#”的模式中忽略的关键字\'【英文标题】:NodeJS Ajv module alway log message ' $ref: keywords ignored in schema at path "#" 'NodeJS Ajv 模块总是记录消息'$ref:路径“#”的模式中忽略的关键字' 【发布时间】:2019-05-14 23:01:44 【问题描述】:我正在使用 ajv 来验证正文请求。随着每个请求的到来,ajv 工作正常,但它总是记录消息'$ref:keywords ignored in schema at path "#"'
我有 2 个架构,login.json 和 login.defs.json
login.defs.json 定义一个通用架构定义,login.json 引用它。
login.json
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"$id": "http://blog-js.com/login.schema#",
"$ref": "login.defs#/definitions/login"
login.defs.json
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://blog-js.com/login.defs#",
"additionalProperties": false,
"definitions":
"login":
"type": "object",
"required": [
"account",
"password"
],
"properties":
"account":
"description": "The account or email of user",
"type": "string",
"minLength": 1,
"maxLength": 255
,
"password":
"description": "The password of user",
"type": "string",
"minLength": 1,
"maxLength": 32
请告诉我我做错了什么?
【问题讨论】:
【参考方案1】:我认为这是因为您将 additionalProperties
关键字设置在错误的位置,而 Ajv 只是在告诉您。
如果那是 login.json
的架构,您不应该看到该消息。
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://blog-js.com/login.schema#",
"$ref": "login.defs#/definitions/login"
对于login.defs.json
,该关键字应属于login
的架构:
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://blog-js.com/login.defs#",
"definitions":
"login":
"type": "object",
"required": [
"account",
"password"
],
"properties":
"account":
"description": "The account or email of user",
"type": "string",
"minLength": 1,
"maxLength": 255
,
"password":
"description": "The password of user",
"type": "string",
"minLength": 1,
"maxLength": 32
,
"additionalProperties": false
【讨论】:
成功了。但我认为ajv的信息并不明确。谢谢以上是关于NodeJS Ajv 模块总是记录消息'$ref:路径“#”的模式中忽略的关键字'的主要内容,如果未能解决你的问题,请参考以下文章