Задать вопрос
@JeanPaulBelmondo

Как в valibot добавить проверку на основе существующего поля?

у меня есть схема
export const SettingsSchema = object(
    reward_type: picklist(toArray(RewardType).map((value) => value.value)),
    message: pipe(
        string(),
    ),
)


мне нужно, чтобы если "reward_type" равен 'fixed', то для message добавлялись проверки:

minValue(2, 'The field must be at least 2.'),
maxValue(12, 'The field must not be greater than 12.'),


______

да, я могу через forward и partialCheck добавлять проверки на все случае жизни, но это максимально неудобно.

есть какой-то другой способ?
  • Вопрос задан
  • 29 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@null_object
Через union например

import * as v from 'valibot';

const Schema = v.union([
  v.object({
    reward_type: v.picklist(['dynamic'].map((value) => value)),
    message: v.pipe(v.string()),
  }),
  v.object({
    reward_type: v.literal('fixed'),
    message: v.pipe(v.string(), v.minLength(2), v.maxLength(12)),
  }),
]);


playground
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы