Ho il seguente convalida su uno dei miei percorsi:convalida Hapi/Joi con oggetto nidificato
payload: {
keywordGroups: Joi.array().items(Joi.object().keys({
language: Joi.string().required(),
containsAny: Joi.array().items(Joi.string()).default([]).when('containsAll', { is: [], then: Joi.required() }),
containsAll: Joi.array().items(Joi.string()).default([]).when('containsAny', { is: [], then: Joi.required() }),
notContainsAll: Joi.array().items(Joi.string()).default([]),
notContainsAny: Joi.array().items(Joi.string()).default([])
})).required(),
}
che sto cercando di fare in modo che containsAny
o containsAll
devono includere almeno una stringa. Se containsAny
è vuoto, containsAll
dovrebbe avere almeno un elemento. E se containsAll
è vuoto, containsAny
dovrebbe includere almeno un elemento.
Ma sembra che lo Joi.when
non funzioni davvero quando si tratta di una matrice di oggetti.
Prova a scambiare il tuo è: [] per Joi.array(). Length (0). la documentazione suggerisce che la condizione sia dovrebbe essere di tipo Joi. https://github.com/hapijs/joi/blob/master/API.md#anywhenref-options – Cuthbert
Penso che stai creando anche una dipendenza circolare qui. vedi questa discussione: https://github.com/hapijs/joi/issues/588 – Cuthbert
@Cuthbert Penso che la mia domanda principale fosse su come potrei fare riferimento a quei campi correttamente, vedendo che si trovano in una serie di oggetti. –