Eğer special
özelliğine sahip nesne dizideki ilk öğeyi sahip yapmayı kabul ediyorsanız:
şu Verilen
, nasıl tek thing
special
özelliği olduğunu doğrulamak array.ordered'u kullanabilir ve sonraki nesneler için ikinci bir şema tanımlayabilirsiniz. Dizideki ikinci öğe bir special
özelliği olduğundan
var joi = require('joi');
var thingSchmea = joi.object().keys({
name: joi.string().required(),
special: joi.boolean().required()
});
var thingWithoutSpecialSchema = joi.object().keys({
name: joi.string().required()
});
var manyThingsSchema = joi.array().ordered(thingSchmea.required()).items(thingWithoutSpecialSchema);
var t = [
{
name: 'cuthbert',
special: true
},
{
name: 'roland',
special: true
},
{
name: 'jake'
},
{
name: 'susan'
}
];
var result = joi.validate(t, manyThingsSchema);
console.log(JSON.stringify(result, null, 2));
değişken t
doğrulama başarısız olur.
Harika isimler! Bu diziyi tekrar okumanız gerekiyor! Joi aracılığıyla böyle karmaşık vakaları doğrulamak için basit bir yol olmadığından şüphe ettim; böylece Joi için uygun olmayan durumlar için başka bir doğrulama katmanı ekledim. – Merrick