问题描述
我有这个 Joi 对象架构
我想验证限制和条件没有任何共同的值。
我尝试使用 Joi.string().disallow(Joi.ref('conditions'))
但它没有用,Joi.string().disallow(...Joi.ref('conditions'))
和 Joi.string().disallow(Joi.ref('..conditions'))
都没有。
解决方法
const Joi = require('@hapi/joi');
const schema = Joi.object({
conditions: Joi.array()
.items(Joi.string().required())
.unique()
.default([]),restrictions: Joi.array()
.items(Joi.string().invalid(Joi.in('$conditions')))
.unique()
.default([])
});
const validObj = {
conditions: ["a","b","c"],restrictions: ["d"]
};
const invalidObj = {
conditions: ["a",restrictions: ["a"]
};
// VALID
schema.validate(validObj,{ context: validObj });
// INVALID
schema.validate(invalidObj,{ context: invalidObj });