当前位置: 首页 > 知识库问答 >
问题:

GraphQL输入类型作为查询参数

姬和豫
2023-03-14

我正在使用Apollo Angular并托管一个GraphQL驱动的服务器。我试图实现的请求很简单。我需要传递一个对象作为我请求的查询参数。这是我的请求:

return this.apollo
    .watchQuery({
        query: this.ListQuery,
        variables: {
            boundaries: {
                east: boundaries.east,
                west: boundaries.west,
                north: boundaries.north,
                south: boundaries.south,
            }
        },
        fetchPolicy: 'no-cache',
    })
    .valueChanges.pipe(
        map(({data}: any) => data.spots ? data.spots.map((spot) => new Spot(spot)) : [])
    );

查询定义为:

query SpotList($boundaries: Boundaries) {
      spots (boundaries: $boundaries) {
          ...

服务器上的我的架构定义为:

type Query {
    spot(id: String!): Spot
    spots(boundaries: Boundaries): [Spot!]! 
}

input Boundaries {
    east: Float
    north: Float
    south: Float
    west: Float
}

当我的解析器功能

@Query()
    async spots(boundaries) {
      console.log(boundaries) //return undefined

我想知道是否允许输入作为查询中的参数,如果不允许,我应该使用什么样的模式或实践。

如果可能,我不希望我的查询在代码中显式地包含每个参数。

非常感谢。

编辑:已解决,解析程序函数中的行为,从嵌套查询装饰器(具有(对象、参数、上下文、信息)模式到其解析程序函数。

共有1个答案

谭光辉
2023-03-14

正如我在问题中忘记提到的,我使用的是Nest服务器端,@nestjs/graphql引入的Decorator@Query为解析器函数提供了一个特殊的签名。

 类似资料:
  • 我正在学习Apollo和graphQL,并将其集成到我的一个项目中。到目前为止一切正常,但现在我正在尝试一些突变,我正在努力处理输入类型和查询类型。我觉得事情比实际情况要复杂得多,因此我正在寻求如何处理我的情况的建议。我在网上找到的示例都是非常基本的模式,但现实总是更加复杂,因为我的模式非常大,如下所示(我只复制一部分): 然后定义输入和负载,依此类推... 为此,我需要一个变异来保存“计算”,因

  • 如果我更改为: 代码运行良好-但我想转换工作。

  • 我是GraphQL新手,在编写了一些代码之后,我遇到了一个问题,即为一个突变声明一个输入类型。以下是我的模式: 当我运行我的应用程序时,我得到了错误信息 原因:graphql。kickstart。工具。SchemaError:预期类型“IdInput”是GraphQLInputType,但事实并非如此!类型是否只允许对象类型被错误地用作输入类型,反之亦然?在graphql。kickstart。工具

  • 问题内容: 我们最近将数据库从MSSQL切换到MySQL,使用参数的查询不再起作用。 这是MSSQL中的查询示例: 通常,参数浏览器会弹出并询问:id的值,但是在MySQL中,我会收到此错误: 您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在’:id’附近使用正确的语法 我尝试使用@或?代替:,它不起作用。 在此先感谢您的帮助。 问题答案: 语法不一样 用户定义变量的文档

  • 我想使用泛型类作为另一个泛型类的类型参数。 起初,我对类的定义是这样的: 然后我的需求发生了变化,我不得不为我的R类型使用包装器/持有者类 到目前为止,我的尝试:(给出编译时错误:

  • 问题内容: 如何利用ng-message作为数字类型?ngMessage是否支持max和min属性?如果可以,怎么办? 演示链接 来自角度文档的示例链接 问题答案: 作为模块正式引入的版本,因此您需要修复以下问题: 使用版本或更高版本(现在是最新版本)。 包含在HTML中(这是一个单独的脚本)。 声明为模块/应用程序的依赖项。 另请参 见此简短演示 。