10

Joi を使用して、RESTful Web サービスで受け入れられるデータ モデルを検証しようとしています。

作成操作では、フィールドに「必須」の検証を適用したいと考えています。ただし、更新操作の場合、部分的なデータ オブジェクトが送信される可能性があるため、「必須」属性を無視したいと考えています。

2 つのスキーマを作成する以外にこれを達成する方法はありますか?

4

5 に答える 5

4

optionalKeysを使用して最初のスキーマを拡張することで、2 つのスキーマを回避できます。

const createSchema = Joi.object().keys({
  name: Joi.string().required(),
  birthday: Joi.date().required(),
});

const updateSchema = createSchema.optionalKeys("name", "birthday");

Joi.validate({name: "doesn't work"}, createSchema); // error: birthday field missing
Joi.validate({name: "it works"}, updateSchema); // all good
于 2019-03-16T18:07:06.920 に答える
0

条件に合わせて使用.when()​​・設定してください。.required()

于 2015-07-09T13:51:44.733 に答える