Joi を使用して、RESTful Web サービスで受け入れられるデータ モデルを検証しようとしています。
作成操作では、フィールドに「必須」の検証を適用したいと考えています。ただし、更新操作の場合、部分的なデータ オブジェクトが送信される可能性があるため、「必須」属性を無視したいと考えています。
2 つのスキーマを作成する以外にこれを達成する方法はありますか?
Joi を使用して、RESTful Web サービスで受け入れられるデータ モデルを検証しようとしています。
作成操作では、フィールドに「必須」の検証を適用したいと考えています。ただし、更新操作の場合、部分的なデータ オブジェクトが送信される可能性があるため、「必須」属性を無視したいと考えています。
2 つのスキーマを作成する以外にこれを達成する方法はありますか?
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
条件に合わせて使用.when()
・設定してください。.required()