问题标签 [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.
graphql - 如何使用 jest 测试带有片段的 GraphQL 查询
问题:我想测试一个存在于.graphql
如下文件中的 GraphQL 查询:
要使用模拟解析器和数据创建 GraphQL 模式,我使用 makeExecutableSchema
and addMockFunctionsToSchema
from graphql-tools。
要从一个笑话测试中运行查询,我的理解是我需要使用graphql()
来自graphql-js的函数。
这个函数需要将查询作为字符串,所以我尝试了两种不同的方法,但它们都不起作用:
- 将文件解析
.graphql
为普通文本文件,给我原始字符串(在我的 jest 配置中使用jest-raw-loader)。这给了我:Failed: Errors in query: Unknown fragment "Widget".
当我运行查询时。 - 使用jest-transform-graphql将
.graphql
文件解析为对象。我相信这应该是正确的方法,因为它应该正确解析任何导入的片段。但是,要执行查询,我需要传递给,这会导致与选项 1 相同的错误消息。query
query.loc.source.body
graphql
javascript - 包装“Foo”的操作“FooQuery”需要一个变量,但在 react-apollo 中没有找到
我遇到了 react-apollo 的问题。即使不在 Foo 类中调用查询:
包装“Foo”的操作“FooQuery”需要一个变量:“id”,但在传递给“Apollo(Foo)”的道具中找不到
graphql - GraphQL 动态查询构建
我有一个 GraphQL 服务器,它能够为指定的源(例如,传感器数据)提供时间序列数据。获取传感器数据的示例查询可能是:
在我的前端,我希望允许用户选择 1 个或多个来源并显示一个图表,其中每个来源都有一条线。使用这样的查询似乎可以做到这一点:
大多数 GraphQL 教程似乎都关注静态查询(例如,唯一改变的是变量,而不是请求的实际形状) - 但在我的情况下,我需要查询本身是动态的(每个都有一个 timeseriesData 请求我选择的 ID)。
我有以下限制:
- 修改服务器的架构不是一种选择(例如,我不能将一组 ID 传递给解析器)
- 我的查询是使用模板字符串指定的,例如 gql`...`
- 我不想手动将查询构建为字符串,因为这似乎是灾难的根源,并且意味着我失去了所有工具优势(例如自动完成、语法突出显示、linting)
我正在使用的堆栈是:
- Apollo 客户端(特别是 apollo-angular)
- 角
- 打字稿
- graphql-tag(用于定义查询)
理想情况下,我想要做的是有某种方式将两个查询合并为一个,这样我就可以按照第一个示例定义它们,然后在抽象层中将它们连接在一起,这样我就可以像第二个示例一样获得单个查询通过电线发送。
但是我不确定如何实现这一点,因为 graphql-tag 正在将查询解析为 AST,我正在努力理解以这种方式操作查询是否可行。
有什么技术可以生成这样的动态查询,而查询的形状是未知的?
typescript - 如何声明一个模块来进行命名导入?
我正在使用graphql-tag。我的文件是这样的。
./operation.graphql
./test.ts
./index.d.ts
应用程序运行良好,但我想防止该错误。
当我执行默认导入时,效果很好,但正如您所见,我在命名导入时遇到错误。
这个怎么申报?谢谢。:)
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
它应该作为当前状态导入。
任何帮助以及建议或批评将不胜感激。先感谢您!
javascript - Nextjs-Graphql webpack loader:如何将 Nextjs 与 Graphql loader 集成
我正在尝试将 Nextjs 与 graphql-tag/loader 集成,这是我的next.config.js
文件:
我无法构建,我收到以下错误:
请帮忙。
graphql - 是否可以将变量放入 GraphQL 标记中?
现在我在下面有这个标签。它是静态的,总是会得到一个 id 为 3 的评论。有没有一种可能的方法可以在这个 graphQL-tag 中放置一个变量。所以我可以重新使用graphQL-tag,只需更改变量ID?
提前致谢!
graphql - 如何在 apollo 的 graphql-gql 中使用从 npm 包导入的自定义 graphQL 类型
我不想编写自己的自定义标量类型,我想从库中导入它们。例如,我想要这个 npm 包中的 UnixTimestamp - gnt
在我typeDefs.js
我尝试这样的事情
但它不起作用。我明白了Error: Type "UnixDate" not found in document.
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 配置错误?任何人都可以对此有所了解吗?
谢谢!
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 阶段也是不可能的,因为它会破坏条件。所以我现在没有主意了。
此致。