0

我想在棱镜中过滤关系 id 并获得相同的实体,而不是相关的实体。简单的例子:

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拥有 id 所有者和 id 所有者userIDArea实体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' }] })

由于属性区域只是一个关系,prisma 没有给我过滤甚至获取 id 的机会。

IE:

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

将产生一个对象数组,例如:

[{
  id: '...'
}]

我的问题是,有没有办法在不删除关系和存储简单字符串的情况下获得我想要的结果?

4

1 回答 1

0

我从 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
}

所以 id 需要作为标量公开,所以你可以过滤它们。

于 2019-01-28T11:00:43.483 回答