我正在测试桑格利亚汽酒来构建一个 graphql/relay 服务器。我有一个非常简单的用户类:
case class User(
id: Int,
username: String,
gender: Gender.Value)
我想允许通过 ID 或用户名进行查询。我创建了一个允许这样做的模式,但字段具有不同的名称:
val Query = ObjectType(
"Query", fields[UserRepo, Unit](
Field("user", OptionType(User),
arguments = ID :: Nil,
resolve = ctx => ctx.ctx.getUser(ctx arg ID)),
Field("userByUsername", OptionType(User),
arguments = Username :: Nil,
resolve = ctx => ctx.ctx.getUserByUsername(ctx arg Username))
))
不幸的是,我需要使用不同的字段名称来查询这些user
,userByUsername
例如:
curl -G localhost:8080/graphql
--data-urlencode 'query={userByUsername(username: "Leia Skywalker") {id, username, gender}}'
或者
curl -G localhost:8080/graph
--data-urlencode "query={user(id: 1025) {id, username, gender}}"
如何创建允许user
在 ID 或用户名上查询单个字段的架构?例如,以下两个都应该返回相同的用户对象:
curl -G localhost:8080/graphql
--data-urlencode 'query={user(username: "Leia Skywalker") {id, username, gender}}'
或者
curl -G localhost:8080/graph
--data-urlencode "query={user(id: 1025) {id, username, gender}}"