Как заставить директиву @unique работать в datamodel.prisma? - PullRequest
0 голосов
/ 10 июля 2019

Итак, я только начал использовать Prisma и пытаюсь добавить поле электронной почты в datamodel.prisma (которая является обязательной строкой). Все работает отлично, но я также хочу дать ей директиву @unique, которая на самом деле не работает.

Я учусь на видео-курсе, но файлы моего и инструктора не совпадают, у него есть файл datamodel.graphql, а у меня - datamodel.prisma, подумал, что, возможно, в этом причина и попытался вручную изменить его на datamodel. graphql, но после этого я даже не могу использовать prisma deploy в терминале.

Я ожидаю, что не смогу добавлять пользователей с одинаковыми электронными письмами, я не получаю сообщений об ошибках, но возможно создание пользователей с одинаковыми электронными письмами.

Буду признателен за любую помощь по этой проблеме.

1 Ответ

0 голосов
/ 16 июля 2019

Просто добавьте директиву @unique к полю электронной почты типа пользователя, чтобы пометить поле как уникальное.Например:

type User {
  id: ID! @id
  email: String! @unique
  name: String!
}

Это гарантирует, что никакие две записи не будут иметь одинаковый адрес электронной почты (кроме нуля), как более подробно описано в документации prisma:

Установка уникальногоограничение гарантирует, что две записи рассматриваемой модели не могут иметь одинаковое значение для определенного поля.Единственным исключением является значение NULL, означающее, что несколько записей могут иметь значение NULL, не нарушая ограничение.Уникальные поля имеют уникальный индекс, применяемый в базовой базе данных.

См .: https://www.prisma.io/docs/datamodel-and-migrations/datamodel-POSTGRES-knum/#unique

Однако важно развернуть новую модель данных.Только после развертывания вашей схемы данных через призменный CLI база данных будет учитывать уникальное ограничение для новых и существующих записей.Учитывая, что вы настроили свой prisma.yml, просто запустите:

$ prisma deploy

Также будьте осторожны, что новая модель данных действительно развернута.Если у вас есть конфликты с существующими данными, может потребоваться использовать флаг принудительной установки, чтобы переписать существующую схему в любом случае, если это необходимо.

См .: https://www.prisma.io/docs/prisma-cli-and-configuration/cli-command-reference/prisma-deploy-xcv9/

...