Joi 验证模式 - 两个字段不能具有相同的值
Joi validation schema - two fields must not have the same value
假设我有以下架构:
var schema = {
fieldOne: Joi.string().required(),
fieldTwo: Joi.string().required()
};
是否可以设置验证规则来检查两个字段是否具有不同的值?
是的。您可以通过使用 Joi.ref
and Joi.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
并不允许使用相同的值。
假设我有以下架构:
var schema = {
fieldOne: Joi.string().required(),
fieldTwo: Joi.string().required()
};
是否可以设置验证规则来检查两个字段是否具有不同的值?
是的。您可以通过使用 Joi.ref
and Joi.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
并不允许使用相同的值。