繁体   English   中英

Apollo / GraphQL具有相同参数的相同查询

[英]Apollo / GraphQL Same Query with Different Parameters

我将如何处理具有不同参数的Apollo查询。 假设我的应用程序具有用户概念,我希望我的API能够通过ID或用户名找到用户。

看来我无法做到这一点

type Query {
  user(id: ID!): User
  user(username: String!): User
}

我必须诉诸于这样的事情吗

type Query {
  userById(id: ID!): User
  userByUsername(username: String!): User
}

我相信您的第二个选择是最好的,但是您可以这样做。

type Query {
  user(id: ID, username: String): User
}

如果不需要参数,那么您的解析器可以使用一些逻辑来确定是否应基于id或用户名来吸引用户。

if (args.id) {
  return getUserById(args.id)
} else {
  return getUserByUsername(args.username)
}

但是,由于本次演讲中提到的原因https://youtu.be/pJamhW2xPYw?t=750 (可能会在12:30左右看到),我相信您的第二个选择是更好的设计选择。 希望有帮助!

使用ID和username作为字段创建一个新的输入类型,并将其指定为参数。

type Query {
  getUser(filters:UserFilter): User
}

input UserFilter{
    ID : Int,
    Username : String
}

查询应如下所示:

Query{
 getUser(filters:{ID:123123})
}

或用于用户名过滤器

Query{
 getUser(filters:{Username:"Tom"})
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM