条件が満たされたときに少なくとも 1 つの要素があることを確認したい配列フィールドがあります。
genre:Joi.array().includes(data.genres).when('field'{is:'fieldValue',then:Joi.required()})
「then」フィールドを Joi.required().min(1) で変更すると、エラーが発生します。
Joiでこれを行うことはできますか?
エラーメッセージの内容については言及していませんが、コードをテストすると、次のようになったと思います。
TypeError: オブジェクト [object Object] にはメソッド 'min' がありません
min()が配列型の関数であるため、このエラーが発生します。新しい検証オブジェクトを作成するthen:部分で、Joi はそこに配列が必要であることを知りません。したがって、次のように指定する必要があります。
then: Joi.array().min(1).required()
完全な検証コードは次のとおりです。
genre: Joi.array().includes(data.genres).when('field', {is: 'fieldValue', then: Joi.array().min(1).required()})