有一个具有三个键的对象
const abc = {
customerId: '777',
firstName: 'pqr'',
lastName: 'xyz',
};
条件是,如果存在客户ID,则可以忽略名字和姓氏。否则,它们应该是最大长度为20的字符串。
const schema = Joi.object({
customerId: Joi.string(),
firstName: Joi.alternatives().when('customerId', {
is: null,
then: Joi.string(),
}),
lastName: Joi.alternatives().when('customerId', {
is: null,
then: Joi.string(),
})
})
Joi.validate(abc, schema);
我在这里收到此错误
错误:{ValidationError:“ firstName”是不允许的 在Object.exports.process(/home/runner/node_modules/joi/lib/errors.js:
那么,如何实现呢?
答案 0 :(得分:1)
您应该使用.or
而不是when
。
这是一个正在运行的示例:https://repl.it/@amasad/joi
模式:
const schema = Joi.object({
customerId: Joi.string(),
firstName: Joi.string().max(20),
lastName: Joi.string().max(20),
}).or('customerId', 'lastName')
.or('customerId', 'firstName');
答案 1 :(得分:0)
那是因为您的架构寻找firstname
而对象却拥有firstName
。尝试不使用大写字母N
。
const abc = {
customerId: '777',
firstname: 'pqr',
lastname: 'xyz'
};