Фильтровать по идентификатору отношения - PullRequest
0 голосов
/ 25 января 2019

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

type User {
  firstName: String!
  lastName: String!

  isOwner: [Meta!]! @relation(link: INLINE, name: "User_Meta_Owner")

  id: ID! @id
}

type Meta {
  owner: User! @relation(link: INLINE, name: "User_Meta_Owner")
  area: Area! @relation(link: INLINE, name: "Meta_Area")

  id: ID! @id
}

type Area {
  id: ID! @id
  name: String!

  meta: Meta! @relation(link: INLINE, name: "Meta_Area")
}

В этом случае я хочу, чтобы все Meta сущности имели владельца с идентификатором userID и Area с идентификатором areaID.

Что возможно:

ctx.db.user({ id: 'userID' }).isOwner()

Получает все Meta без фильтра для области.

То, что я хочу, это что-то вроде:

ctx.db.user({ id: 'userID' }).isOwner({ where: { area: 'areaID' })
ctx.db.metas({ where: [{ owner: 'userID' }, { area: 'areaID' }] })

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

есть:

await ctx.db.user({ id: 'userID' }).isOwner()

приведет к массиву объектов вроде:

[{
  id: '...'
}]

У меня вопрос: есть ли способ получить желаемый результат без удаления отношения и сохранения простых строк?

1 Ответ

0 голосов
/ 28 января 2019

Я получил ответ от члена prisma, чтобы он работал только с такой моделью:

type Meta {
  owner: User! @relation(link: INLINE, name: "User_Meta_Owner")
  area: Area! @relation(link: INLINE, name: "Meta_Area")
  ownerId: ID! @db(name: "User")
  areaId: ID! @db(name:"Area")
  id: ID! @id
}

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

...