问题标签 [graphql-tag]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1700 浏览

graphql - 如何使用 jest 测试带有片段的 GraphQL 查询

问题:我想测试一个存在于.graphql如下文件中的 GraphQL 查询:

要使用模拟解析器和数据创建 GraphQL 模式,我使用 makeExecutableSchemaand addMockFunctionsToSchemafrom graphql-tools

要从一个笑话测试中运行查询,我的理解是我需要使用graphql()来自graphql-js的函数。

这个函数需要将查询作为字符串,所以我尝试了两种不同的方法,但它们都不起作用:

  • 将文件解析.graphql为普通文本文件,给我原始字符串(在我的 jest 配置中使用jest-raw-loader)。这给了我:Failed: Errors in query: Unknown fragment "Widget".当我运行查询时。
  • 使用jest-transform-graphql.graphql文件解析为对象。我相信这应该是正确的方法,因为它应该正确解析任何导入的片段。但是,要执行查询,我需要传递给,这会导致与选项 1 相同的错误消息。queryquery.loc.source.bodygraphql
0 投票
1 回答
484 浏览

javascript - 包装“Foo”的操作“FooQuery”需要一个变量,但在 react-apollo 中没有找到

我遇到了 react-apollo 的问题。即使不在 Foo 类中调用查询:

包装“Foo”的操作“FooQuery”需要一个变量:“id”,但在传递给“Apollo(Foo)”的道具中找不到

0 投票
4 回答
24668 浏览

graphql - GraphQL 动态查询构建

我有一个 GraphQL 服务器,它能够为指定的源(例如,传感器数据)提供时间序列数据。获取传感器数据的示例查询可能是:

在我的前端,我希望允许用户选择 1 个或多个来源并显示一个图表,其中每个来源都有一条线。使用这样的查询似乎可以做到这一点:

大多数 GraphQL 教程似乎都关注静态查询(例如,唯一改变的是变量,而不是请求的实际形状) - 但在我的情况下,我需要查询本身是动态的(每个都有一个 timeseriesData 请求我选择的 ID)。

我有以下限制:

  1. 修改服务器的架构不是一种选择(例如,我不能将一组 ID 传递给解析器)
  2. 我的查询是使用模板字符串指定的,例如 gql`...`
  3. 我不想手动将查询构建为字符串,因为这似乎是灾难的根源,并且意味着我失去了所有工具优势(例如自动完成、语法突出显示、linting)

我正在使用的堆栈是:

  • Apollo 客户端(特别是 apollo-angular)
  • 打字稿
  • graphql-tag(用于定义查询)

理想情况下,我想要做的是有某种方式将两个查询合并为一个,这样我就可以按照第一个示例定义它们,然后在抽象层中将它们连接在一起,这样我就可以像第二个示例一样获得单个查询通过电线发送。

但是我不确定如何实现这一点,因为 graphql-tag 正在将查询解析为 AST,我正在努力理解以这种方式操作查询是否可行。

有什么技术可以生成这样的动态查询,而查询的形状是未知的?

0 投票
1 回答
849 浏览

typescript - 如何声明一个模块来进行命名导入?

我正在使用graphql-tag。我的文件是这样的。

./operation.graphql

./test.ts

./index.d.ts

应用程序运行良好,但我想防止该错误。

当我执行默认导入时,效果很好,但正如您所见,我在命名导入时遇到错误。

这个怎么申报?谢谢。:)

0 投票
2 回答
602 浏览

javascript - 进口的组件未使用 GraphQL 和 ReactJS 定义

我正在尝试在 ReactJS 中呈现我的 HOC 函数,但它给了我一个错误。以下是一些片段(为了空间和清晰度,我已经删除了不相关的内容):

在我的app.js组件中,我正在导入我的 HOC:

然后进入<StoriesHOC />

编辑:这是 StoryShow 组件,因为它也被导出为默认功能。

实际的 GraphQL 查询import { getStories } from "../../Queries/Queries";正在另一个文件中执行,格式如下:

但是,chrome浏览器中显示的实际错误是:

它稍后会给出停止位置的线,这<Query query={getStories}>在 StoriesHOC 函数中可以看到。话虽这么说,我的问题似乎仅源于这条线,但是虽然我一直在努力解决这个问题,但我最好的猜测是我在 GraphQL 查询中做错了,但是当我在后端检查 IDE 时,它完美呈现。

还有一个问题是试图弄清楚我是否在我的 app.js 文件中正确导出了导入的函数,但我知道因为我使用它导出了export default function myFunc它应该作为当前状态导入。

任何帮助以及建议或批评将不胜感激。先感谢您!

0 投票
1 回答
2892 浏览

javascript - Nextjs-Graphql webpack loader:如何将 Nextjs 与 Graphql loader 集成

我正在尝试将 Nextjs 与 graphql-tag/loader 集成,这是我的next.config.js文件:

我无法构建,我收到以下错误:

请帮忙。

0 投票
1 回答
7919 浏览

graphql - 是否可以将变量放入 GraphQL 标记中?

现在我在下面有这个标签。它是静态的,总是会得到一个 id 为 3 的评论。有没有一种可能的方法可以在这个 graphQL-tag 中放置一个变量。所以我可以重新使用graphQL-tag,只需更改变量ID?

提前致谢!

0 投票
1 回答
126 浏览

graphql - 如何在 apollo 的 graphql-gql 中使用从 npm 包导入的自定义 graphQL 类型

我不想编写自己的自定义标量类型,我想从库中导入它们。例如,我想要这个 npm 包中的 UnixTimestamp - gnt

在我typeDefs.js我尝试这样的事情

但它不起作用。我明白了Error: Type "UnixDate" not found in document.

0 投票
1 回答
2138 浏览

vue.js - graphql-tag/loader:模块构建失败并出现 GraphQLError:语法错误

我面临的奇怪问题。使用 Vue-CLI3 npm run serve

有以下配置:

和一个.graphql文件:

运行时npm run serve,我收到以下错误:

使用:

  • “graphql”:“^14.0.2”
  • “graphql-标签”:“^2.10.0”

我慢慢假设这可能是我的 Babel 或 Vue 配置错误?任何人都可以对此有所了解吗?

谢谢!

0 投票
0 回答
224 浏览

javascript - 查询性能慢:使用 $lookup 和 $and/$or 的 MongoDB

我正在尝试找到一种方法来创建一个引擎,该引擎将 GraphQL 查询过滤器转换为 MongoDB 聚合,同时保持性能。我们的应用程序需要通过对集合 B、C 甚至 D 应用过滤器来限制集合 A 的结果。

为了更好地理解,这里有一个关于如何将过滤器转换为 MongoDB 的示例。

这个:

被翻译成这样:

该引擎足够聪明,可以重新分配到不需要 $lookups 的第一个位置 $match 属性,如果需要,则在 $lookups 之后立即重新分配,但是如果它们在 $and/$or 条件块内,则在最后 $lookup,不管那里有什么属性。

我可以扫描 $and 中使用的内容并将其解构为新的重新分配的 $match 阶段,但我需要弄清楚如何处理 $or 运算符:我不能对其应用相同的解构想法,因为这会使健康)状况。

所以我的问题是:是否有另一种方法可以将阶段 $lookup 与 $and/$or 一起使用并大幅提高性能?

创建更多索引无济于事,因为它们不用于 $lookup。正如 MongoDB 团队建议的那样,向上移动 $match 阶段也是不可能的,因为它会破坏条件。所以我现在没有主意了。

此致。