jrk*_*rkt 8 graphql apollo-client
我的 GraphQL 架构定义为:
type Query {
getEntity(id: Int!): Entity
getEntityUsers(entityId: Int!, statusId: Int): [User]
}
type Entity {
id: Int!
name: String!
email: String!
logo: String
createdAt: DateTime!
updatedAt: DateTime!
users(statusId: Int): [User]
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我有两种获取Entity对象的用户的方法。目前适用于我的查询的是getEntityUsers根解析器方法。此查询如下所示:
query getEntityUsers($entityId: Int!, $statusId: Int) {
users: getEntityUsers(entityId: $entityId, statusId: $statusId) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
.. 变量:
{
entityId: 1,
statusId: 2
}
Run Code Online (Sandbox Code Playgroud)
无论如何,是否可以通过允许我传入 来使另一种方式起作用statusId?现在查询看起来像这样:
query getEntity($id: Int!) {
entity: getEntity(id: $id) {
...
users (statusId: 2) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
这显然适用于变量:
{
id: 1
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想使用第二种方法并更改statusId? statusId如果根解析器上没有定义它,是否可以传入?
我试过查询:
query getEntity($id: Int!) {
entity: getEntity(id: $id) {
...
users (statusId: $statusId) {
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
.. 变量:
{
id: 1,
statusId: 2
}
Run Code Online (Sandbox Code Playgroud)
但我只是收到错误:Variable "$statusId" is not defined by operation "getEntity".无论如何要这样做吗?
Dan*_*den 10
每个操作(查询或变异)都必须明确定义您在该操作中使用的任何变量。因此,如果您有一个名为 的变量$statusId,则必须将此变量的类型指定为操作定义的一部分:
query getEntity($id: Int!, $statusId: Int) {
# your selection set here
}
Run Code Online (Sandbox Code Playgroud)
这些变量在您的查询中的何处使用(无论是在根级别还是其他地方)是无关紧要的——它们必须始终被定义为您的操作定义的一部分。
| 归档时间: |
|
| 查看次数: |
10945 次 |
| 最近记录: |