【发布时间】:2019-06-19 13:18:42
【问题描述】:
我想在棱镜中过滤关系 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 实体的所有者为 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' }] })
由于属性区域只是一个关系,prisma 没有给我过滤甚至获取 id 的机会。
即:
await ctx.db.user({ id: 'userID' }).isOwner()
将产生一个对象数组,例如:
[{
id: '...'
}]
我的问题是,有没有什么方法可以在不删除关系和存储简单字符串的情况下获得我想要的结果?
【问题讨论】:
标签: prisma prisma-graphql