次のようなネストされたスキーマ設定があります。
var schema = Joi.object().keys({
first_name: Joi.string().required(),
last_name: Joi.string().required(),
address: Joi.object().keys({
street: Joi.string().required(),
zip: Joi.number().required(),
state: Joi.string().required(),
country: Joi.string().required()
}).required(),
})
var options = { abortEarly: false };
var result = Joi.validate({}, schema, options);
これを実行するresult.error
と、次のメッセージが返されます。
[
{message: '"first_name" is required', path: 'first_name' },
{message: '"last_name" is required', path: 'last_name' },
{message: '"address" is required', path: 'address' }
]
ご覧のとおり、address
フィールドは展開されていません。アドレス フィールド全体が欠落しているというメッセージを受け取りたくありません。代わりに、住所スキーマの個々の項目が欠落していることを知りたいです。明示的に必須にしないaddress
と、その中のアイテムはまったく検証されませんrequired()
。ネストされたフィールドの検証は、スキーマ レベル内の個々のアイテムではなく、ネストされたスキーマ オブジェクト レベル全体でのみ機能するようです。個々のネストされたスキーマ アイテムで機能させるにはどうすればよいですか?