prisma findUnique, где принимает только один уникальный аргумент

Я столкнулся с проблемой, когда мне нужно проверить, существует ли пользователь по его имени пользователя и электронной почте, поскольку оба являются уникальными полями в базе данных, но я получил сообщение об ошибке. Argument where of type UserWhereUniqueInput needs exactly one argument, but you provided username and email. Please choose one. итак, есть ли способ выполнить этот запрос только один раз ?. вместо того, чтобы запускать по одному для каждого, как показано ниже

const user = await prisma.user.findUnique({
        where: {
          username,
          email,
        },
      });

и не так

const user = await prisma.user.findUnique({
        where: {
          username,
        },
      });

const user = await prisma.user.findUnique({
        where: {
          email,
        },
      });


person ahmdtalat    schedule 01.02.2021    source источник
comment
Требуются ли оба username и email на вашей User модели или одна из них помечена как необязательная с ? в схеме Prisma?   -  person nburk    schedule 25.02.2021


Ответы (1)


Я не совсем уверен, но prisma возвращает объект JS ... Так что, возможно, такой запрос должен работать:

const query = await prisma.user.findUnique({
        where: {
          user: user.username
        },
       select: {
         user: true,
         email: true
      }
      });

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

Если бы мое решение не работало, я бы заглянул сюда, чтобы получить дополнительные ответы: https://www.prisma.io/docs/concepts/components/prisma-client/crud#findfirst

person Ricky    schedule 25.02.2021
comment
Николай из команды Prisma здесь. Я не думаю, что select имеет значение, но это ключевой момент: я не совсем уверен, почему вы выбрали пользователь + адрес электронной почты как уникальные, поскольку я бы предположил, что один в любом случае привязан к другому. Поскольку и id, и email уже являются уникальными свойствами, нет смысла указывать оба свойства в findUnique запросе. @ahmdtalat, вы должны просто использовать один из них и получить тот же результат. - person nburk; 25.02.2021