问题标签 [sangria]

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 投票
1 回答
611 浏览

scala - Sangria GraphQL:如何混合延迟字段、派生对象类型和案例类

我很好奇是否可以将案例类的字段定义为延迟,同时仍然使用deriveObjectType宏来定义其他所有内容。

这是一个例子。仪表板包含一系列选项卡:

我正在Dashboard.tabs使用 a 推迟该字段的解析Fetcher,并且我想继续使用deriveObjectType宏(如果可能)。所以这就是我定义我ObjectType的 s 的方式:

但是,当我运行代码时,出现以下错误:

如果我tabs从案例类中删除该字段,Dashboard错误就会消失,但我会失去使用案例类的一些好处(尤其是在单元测试中)。如果我避免使用deriveObjectType宏(并手动定义Dashboard's ObjectType),那么我将失去宏的好处(更少的样板)。

所以,我很好奇是否有更好的方法或另一种方法来解决这个问题,DashboardType而不是在不使用宏或从案例类中删除tags字段的情况下定义。Dashboard

(我希望可能有某种@GraphQLDeferred注释可以应用于该Dashboard.tabs领域或类似的东西???)

0 投票
2 回答
557 浏览

scala - 将字段参数(例如分页参数)传递给延迟的“Fetcher”的最佳方式是什么?

下面是我当前如何处理延迟字段参数的示例。

一个Parent类包含一个延迟PageChild对象。子项的分页参数在children字段上定义。我需要能够将分页参数连同父 ID 一起传递给 deferred Fetcher,所以我将它们与父 ID 一起捆绑在一个临时DeferredChildInput对象中,然后将它们传递给Fetcher. 相应DeferredChildResult的返回查询的结果 (the Page[Child]) 和 the DeferredChildInput(use in the HasId)。

问题是,有没有更好的方法将字段参数和父 id 传递给 deferred Fetcher

0 投票
2 回答
261 浏览

scala - 具有 EitherT 结果的 Sangria GraphQL Schema

我正在将 Sangria 用于 Play 应用程序,目前正在努力实现架构定义。问题是,服务没有直接返回所需的对象,它返回一个包含该对象的 EitherT。

下面是一些代码示例

案例类

用户服务

如果服务将返回 aUser而不是 aEitherT[Future, AbstractError, User]我将派生这样的架构:

架构

我是否必须实现一个额外的层来UserEitherT对象中提取,或者是否有另一种方法来处理这种情况?

0 投票
1 回答
77 浏览

scala - GraphQL 将 @include 逻辑传递给存储库调用

我有一个查询

根据withComments变量,我可以抓取带有或不带有评论的提要。有用。但似乎桑格利亚汽酒无论如何都必须获得带有评论的提要(对我来说性能问题是什么),即使我不需要它们并传递withCommentsfalse

什么是在对象中包含/排除继承列表(比如关系)的正确方法,如果我不从存储库中选择所有数据@include,让存储库知道它?

如果解决方案是进行两个查询feedfeedWithComments我看不到@include.

0 投票
2 回答
334 浏览

scala - 使用 Sangria 进行查询设计以防止开销

我有一个关于架构/查询设计的问题。

让我们假设有一个Study模型。

Study可以有多个后继者,所以显然有parentId字段。

Userfrom context 可以访问研究,因此我们希望将所有可访问的研究作为树返回到 UI。所以查询字段可以是这样的

在该accessibleStudies方法中,我们向 DB 请求数据并准备可以在 UI 上作为树查看的列表。

现在有趣的部分。 StudyNode应该有额外的字段 - progress,它可以计算为所有后继者进度的递归总和,所以我们每次都需要整个progress可访问的研究列表来获取单个节点。如此简单的方法

将导致巨大的开销,因为我们需要一次又一次地为每个节点获取可访问的研究。不过好像里面计算进度比较方便StudyQueries.accessibleStudies,所以我们会有类似prepare的东西Map[EntityId, Progress]StudyNode现在定义可以这样修改

但这对我来说似乎不是一个干净的解决方案。此外,我必须手动检查ctx.astFields以验证是否progress正在调用该字段。现在我想知道是否有更好的方法来处理这种情况。

0 投票
1 回答
319 浏览

scala - 看不懂 Fetcher.rel

我有以下案例类:

它们代表一个简单的模式,其中一个Organization可以有多个Event.
基本上我试图定义两个graphql查询:一个列出所有组织及其嵌套事件,第二个查询是另一种方式:列出所有事件及其相应的组织。在这两种情况下,我都想避免 N+1 查询。我认为两个查询都可以在 2 个 SQL 查询中运行。
为了解决这个问题,我查看了高级 Fetch API,特别是该Fetcher.rel部分。如果我理解正确,我需要定义这样的关系 :val byOrganization = Relation[Event, OrganizationId]("byOrganization", e => Seq(e.organizationId))然后是 a Fetcher.rel,但我不能让它工作。
这是我的架构定义的完整代码:

它无法编译,我收到此错误: ound :

你能帮我找出我错过了什么吗?

0 投票
1 回答
501 浏览

scala - 斯卡拉。Sangria.Print json 模式

我正在通过 Scala 在 Scala 上使用 GraphQL Sangria。我也在使用apollo-codegen.

我想定义我的架构一次,所以我通过以下方式将我的架构从后端导出到前端:

问题是桑格利亚汽酒的renderPretty打印schemaAst格式。但apollo-codegen期望json格式。

如何以sangriajson 格式制作渲染模式?或者也许无痛转换schemaAstjsonvia SBT

0 投票
1 回答
814 浏览

scala - 对 ObjectType 和 InputObjectType 使用相同的对象

我有一个这样定义的模型对象:

这是我在桑格利亚汽酒模式定义中尝试做的事情:

我需要将其定义OrganizationFieldsObjectType能够Organization在我的 graphql 查询中使用以及ObjectInputType能够在我的 graphql 突变中使用它作为输入。问题是我在运行时遇到以下异常:
Type name 'OrganizationFields' is used for several conflicting GraphQL type kinds: ObjectType, InputObjectType. Conflict found in an argument 'organization' defined in field 'createOrganization' of 'Mutation' type
有没有办法让它工作?

0 投票
1 回答
543 浏览

scala - 如何在 GraphQL Sangria 中将 Scala Map[String, Seq[String]] 转换为 MapType

我正在尝试在 GraphQL Sangria 中使用Map[String, Seq[String]]Scala MapType。我认为可以使用的方式是:

0 投票
0 回答
255 浏览

scala - Sangria GraphQL Context 会变得太大?

您如何构建此处描述的上下文对象,使其不包含您的架构可能需要的所有服务?

在示例 StarWars 架构中,所有字段都使用相同的上下文(CharacterRepo) 进行解析。

我的上下文可能包含 50 种不同的服务?