Graphql 在查询中添加非';t型

Graphql 在查询中添加非';t型,graphql,graphql-js,Graphql,Graphql Js,我正在做一个小的个人项目,它从RESTAPI导出数据并通过Graphql公开它们 我得到了我的类型: type Team{ id: ID, name: String, code: String } 查询的配置如下: type Query { teams(id: ID, name: String, code: Int): [Team] } Query: { teams: (_, filters) => footballService.getTeams(fi

我正在做一个小的个人项目,它从RESTAPI导出数据并通过Graphql公开它们

我得到了我的类型:

type Team{
    id: ID,
    name: String,
    code: String
}
查询的配置如下:

type Query {
  teams(id: ID, name: String, code: Int): [Team]
}

Query: {
  teams: (_, filters) => footballService.getTeams(filters),
}
筛选器包含调用期间传递的所有参数,如
teams(id:100)


我的问题是,如果想要API中的团队列表,我需要传递竞赛ID。那么有没有一种方法可以调用
团队(ID:100,competitionId:200)
在“我的团队类型”中不添加竞争ID,为团队查询定义的参数不必与团队类型属性相同。这是可能的:

type Team {
    id: ID,
    name: String,
    code: String
}

type Query {
  teams(id: ID, name: String, code: Int, competitionId: Int): [Team]
}

Query: {
  teams: (_, filters) => footballService.getTeams(filters),
}
通常情况下,分页时会有类似的内容,例如,这些字段不属于模型类型:

type Query {
  teams(
    filter: String
    skip: Int
    first: Int
    orderBy: String
  ): [User!]!

但是,您需要确保您的解析器(例如GetTeam)正确处理这些参数。

您为团队查询定义的参数不必与团队类型属性相同。这是可能的:

type Team {
    id: ID,
    name: String,
    code: String
}

type Query {
  teams(id: ID, name: String, code: Int, competitionId: Int): [Team]
}

Query: {
  teams: (_, filters) => footballService.getTeams(filters),
}
通常情况下,分页时会有类似的内容,例如,这些字段不属于模型类型:

type Query {
  teams(
    filter: String
    skip: Int
    first: Int
    orderBy: String
  ): [User!]!

但是,您需要确保您的解析器(例如getTeams)正确处理这些参数。

这里不完全清楚您在问什么。您可以向
teams
字段添加所需的任何参数。您有名为
id
name
code
的参数,而另一种类型有同名字段,这一事实与此无关。@DanielRearden是的,我很难解释。我想传递一个不在类型上的参数。就像我在示例中所说的,我想打一个电话,比如
teams(id:100,competitionId:200)
,但不添加任何类型的
competitionId
,你能解释为什么吗?你说的是数据库模式还是实际的graphql模式?@real我说的是graphql模式,比如它从api获取数据,api模型与我的不同。要从api中获取团队列表,我需要通过竞赛id,所以基本上我想通过竞赛id,但为什么不添加竞赛id呢?属性可以是可选的,如果不需要,您可以不提供它。例如,团队(id:id,name:String,code:Int,competitionId:Int):[团队]这里不完全清楚你在问什么。您可以向
teams
字段添加所需的任何参数。您有名为
id
name
code
的参数,而另一种类型有同名字段,这一事实与此无关。@DanielRearden是的,我很难解释。我想传递一个不在类型上的参数。就像我在示例中所说的,我想打一个电话,比如
teams(id:100,competitionId:200)
,但不添加任何类型的
competitionId
,你能解释为什么吗?你说的是数据库模式还是实际的graphql模式?@real我说的是graphql模式,比如它从api获取数据,api模型与我的不同。要从api中获取团队列表,我需要通过竞赛id,所以基本上我想通过竞赛id,但为什么不添加竞赛id呢?属性可以是可选的,如果不需要,您可以不提供它。例如团队(id:id,名称:字符串,代码:Int,competitionId:Int):[团队]