Je rencontre un problème (ou ce que je crois être un) avec la validation Joi. J'essaie d'attribuer une valeur à une clé inexistante si elle a été transmise dans le corps de la requête.Joi validation définie par défaut comme objet vide
Ainsi, par exemple:
parameters: Joi.object().keys({
keyA: Joi.string().allow('').allow(null).default(null),
keyB: Joi.object().keys({
b1: Joi.string(),
b2: Joi.string(),
b3: Joi.object().keys({
b3_1: Joi.string(),
b3_2: Joi.string(),
b3_3: Joi.string()
})
}).default({}),
keyC: Joi.object().keys({
c1: Joi.number(),
c2: Joi.number(),
c3: Joi.boolean(),
c4: Joi.boolean()
}).default({}),
keyD: Joi.object().keys({
d1: Joi.number(),
d2: Joi.number()
}).default({}),
keyE: Joi.object().keys({
e1: Joi.number()
}).default({})
}).allow(null)
Donc, pour être précis, si je devais passer:
{
keyA: "foo",
keyD: {
d1: 21.9,
d2: 21.1
},
keyE: {
e1: 42
}
}
je recevrais ce en retour
{
keyA: "foo",
keyB: {},
keyC: {},
keyD: {
d1: 21.9,
d2: 21.1
},
keyE: {
e1: 42
}
}
Avec: yeux: sur les objets vides. Que manque-t-il avec la méthode Joi.default()? Suis-je en train de dépasser ce que Joi est destiné?
Notez que je ne vois pas d'erreurs de validation - Je n'arrive pas à obtenir le résultat souhaité – bneigher