javascript – Joi验证模式 – 两个字段不能具有相同的值

假设我有以下架构:

var schema = {
  fieldOne: Joi.string().required(),
  fieldTwo: Joi.string().required()
};

是否可以设置验证规则来检查两个字段是否具有不同的值?

最佳答案
是的.您可以使用Joi.refJoi.invalid(别名为Joi.disallow)来完成此操作.对于您的特定示例,它将是:

var assert = require('assert');
var Joi = require('joi');

var schema = Joi.object().keys({
  fieldOne: Joi.string().required(),
  fieldTwo: Joi.string().disallow(Joi.ref('fieldOne')).required()
});

测试它会让我们得到我们期望的结果:

assert.ok(Joi.validate(4, schema).error !== null);
assert.ok(Joi.validate({ fieldOne: 'a', fieldTwo: 'a' }, schema).error !== null);
assert.ok(Joi.validate({ fieldOne: 'a', fieldTwo: 'b' }, schema).error === null);

它的工作原理是在fieldTwo的定义中引用fieldOne并禁止相同的值.

转载注明原文:javascript – Joi验证模式 – 两个字段不能具有相同的值 - 代码日志