Призма: как запросить запись на основе неуникальных столбцов - PullRequest
0 голосов
/ 16 января 2020

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

type Membership {
      id: ID! @id
      memberKey: String! @unique
      member: User! @relation(name: "MemberUser")
      project: Project! @relation(name: "MemberProject")
      access: [Access] @scalarList(strategy: RELATION)
      createdBy: User @relation(name: "MembershipCreator")
      updatedBy: User @relation(name: "MembershipUpdator")
      createdAt: DateTime! @createdAt
      updatedAt: DateTime! @updatedAt
}

type Project {
      id: ID! @id
      initials: String! @unique
      name: String! @unique
      desc: String
      conf: Json
      products: [Product!] @relation(name: "ProjectProducts")  
      tags: [Tag!] @relation(name: "ProjectTags")
      isActive: Boolean @default(value: true)
      createdBy: User @relation(name: "ProjectCreator")
      updatedBy: User @relation(name: "ProjectUpdator")
      createdAt: DateTime! @createdAt
      updatedAt: DateTime! @updatedAt
}

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

 project = await prisma.query.membership({
                where: {
                    project: {
                        id: projectId
                    }
                }
            }, `{ id  }`)

Но если мне нужно запросить на На основе любого неуникального поля, такого как Project.id, я не могу этого сделать, поскольку Prisma по умолчанию создает функции только для уникальных полей, в моем случае я могу запрашивать id и memberkey. я вижу ошибку:

Ошибка: переменная "$ _v0_where" получила недопустимое значение {member: {id: "ck57qob5z00f90791d1973nbh"}}; Поле "member" не определено типом MembershipWhereUniqueInput. Вы имели в виду memberKey?

, пожалуйста, помогите

1 Ответ

0 голосов
/ 27 января 2020

Вы можете добавить member: Member! @relation(name: "MemberProject") или member: [Member!]! @relation(name: "MemberProject") к типу проекта в модели данных, чтобы получить все членства для определенного проекта.

Используя свободный интерфейс API призмы (не привязку призмы), он может выглядеть так:

const commentsForPost = await prisma
  .post({ id: 'cjsviilj60g8y0b43bme3x8ib' })
  .comments()

см .:

...