可以针对数组中的元素进行验证吗?

Possible to validate against elements in an array?

我正在使用 validate 来验证输入,我需要验证一个必须是我的 arr.

中的数字之一的输入
const arr = [1, 2, 4, 5, 9, 14];

const p = {
  System: {
    type: Number,
    enum: arr,
    required: true
  }
};

如果我尝试 enum: arr,那么它需要整个数组,而不仅仅是其中一个元素。

问题

是否可以让 validate 使用 arr 中的其中一个号码?

import Schema from 'validate'
const arr = [1, 2, 4, 5, 9, 14];

const p_schema = new Schema({
  System: {
    type: Number,
    enum: [...arr],
    required: true
  }
});
let p = {
    System: 9
}

const errors = p_schema.validate(p)

当您指定enum规则时,System的值必须是数组中的值之一。 但是,您的代码存在的问题是您没有从验证包中调用 Scheme,因此您需要更改以下内容:

import Schema from "validate";

const arr = [1, 2, 4, 5, 9, 14];
const v = new Schema({
  System: {
    type: Number,
    enum: arr,
    required: true,
  },
});

// For testing
const error = v.validate({ System: 3 });