4

次のようなネストされたスキーマ設定があります。

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()。ネストされたフィールドの検証は、スキーマ レベル内の個々のアイテムではなく、ネストされたスキーマ オブジェクト レベル全体でのみ機能するようです。個々のネストされたスキーマ アイテムで機能させるにはどうすればよいですか?

4

1 に答える 1