AVJ 不验证枚举类型

6 javascript enums jsonschema node.js

如果已经有人问过这个问题,我深表歉意,但我无法找到有效的答案

我在使用AVJenum类型验证 JSON 架构时遇到问题

我希望下面的代码返回 false,因为给定的值不会出现在类型enum

var Ajv = require('ajv');
var ajv = new Ajv();

var schema = {
  gender: {
    enum: [
      'male',
      'female',
      'other'
    ]
  }
};
ajv.validate(schema, { gender: 'test' });
// returns true
Run Code Online (Sandbox Code Playgroud)

你能让我知道如何解决这个问题吗

aww*_*ght 8

在 JSON 模式中,模式中的所有属性都是称为keywords 的指令。未知的关键字将被忽略。

在您的架构中,“性别”不是已知的 JSON 架构关键字,因此它将被忽略。您可能正在寻找“properties”关键字:

{
  properties: {
    "gender": {
      enum: ["male", "female", "other"]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)