如何强制服务器端的过滤器到graphql查询?

时间:2020-05-02 23:49:42

标签: graphql nestjs prisma-graphql graphql-tools

想象一下这样一个条件,我有一个名为“用户”的查询,该查询返回所有用户,并且这些用户可以与一个或多个公司相关联,所以我有一个类型UserCompanies(我需要它,因为它可以保存除关系)。我正在使用Prisma,我需要强制执行一个筛选器,该筛选器仅返回与请求者属于同一公司的用户。 我从JWT获得了该公司的信息,需要将其注入查询中,然后再发送给Prisma。

因此,查询应该是这样的:

null

在服务器端,我应该将其转换为:(用户可以,只需更改args)

query allUsers {
  users {
    name
    id
    status
    email
    userCompanies{
      id
      role
    }
  }
}

我看到了一些解决方法,但是我不知道这是否是最好的方法: 1-使用addFragmentToInfo来完成向查询添加条件的工作,但是如果查询中已经设置了usercompanies,则会给我带来冲突。否则,它将正常工作。 2-我可以为查询使用别名,但是在数据库结果之后,我将需要编辑数组中的所有结果以覆盖结果。 3-不要在Prisma上使用信息并在js中过滤。 4-编辑GraphqlResolveInfo类型的信息(第4个参数)

0 个答案:

没有答案