Как проверить отсутствие дублирования с Yup

У меня есть проверка, которая только проверяет свои поля, проверяя, не нарушают ли они его единственные правила, но допускает дублирование внутри массива.

Я хочу какое-то условие, которое не позволит дублировать значения внутри него.

Мой объект:

respostas: Yup.array()
    .of(
      Yup.object().shape({
        nome: Yup.string()
          .trim()
          .max(1000, Messages.RESPOSTA_ENQUETE_TAMANHO_MAXIMO)
          .required(Messages.CAMPO_OBRIGATORIO)
      })
    )
    .required(Messages.RESPOSTA_QUANTIDADE_MINIMA)

Например, у меня будет такой массив: [aaa, bbb, aaa] разрешен, но я не хочу этого дублирования.

Всего 1 ответ


Чтобы подтвердить это, вы можете написать свой собственный .test() . Вы можете добавить следующий тест к объекту Yup.

.test("Unique", "Values need te be unique", values => {
    return (new Set(values)).size === values.length;
})

Ошибка будет добавлена ​​к объекту в целом, а не в определенном поле.


Есть идеи?

10000