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

返回时将JsonObject解构为GraphQL类型

乌璞瑜
2023-03-14

Vertx是json的忠实粉丝,我也是一级公民。我将jsonb列存储在postgres中,作为我的主要数据存储机制。有点像这样:

CREATE TABLE game (
    id varchar(16) not null default next_id() primary key,
    data jsonb not null
);

我检索数据,处理json对象,并将其返回到浏览器。效果很好。

虽然我也在尝试使用GraphQL,但似乎无法将json对象转换为GraphQL类型。e、 g.我将这些数据存储在数据库中:

{"name": "dominion", "createdBy": "Donald X. Vaccarino", "id": 233}

这是graph ql类型:

type Game {
    id: Long,
    name: String,
    createdBy: String,
    createdAt: DateTime,
    deletedAt: DateTime
}

这个graphql查询返回一个空项列表,因为jsonArray中的jsonObject(game)没有被分解成游戏类型:

type Query {
    allGames(secureOnly: Boolean = false): [Game]
}

但是,如果我使用json作为查询结果类型,则会显示游戏列表:

type Query {
    allGames(secureOnly: Boolean = false): [JSON]
}

然而,问题是graphql模式中现在没有类型信息。无法让客户端知道JSON对象中有哪些属性

我的数据提取程序具有以下类型:

DataFetcher[CompletionStage[JsonArray]]

关于如何在代码中返回json并让graph ql响应返回游戏类型有什么想法吗?

共有1个答案

蒋昊天
2023-03-14

默认的GraphQL数据获取程序是PropertyDataFetcher。

如果你想支持Vert. xJsonObjectJsonArray,你必须配置GraphQL-Java来使用VertxProperty tyDataFetcher:

RuntimeWiring.Builder builder = RuntimeWiring.newRuntimeWiring();
builder.wiringFactory(new WiringFactory() {
  @Override
  public DataFetcher<Object> getDefaultDataFetcher(FieldWiringEnvironment environment) {
    return VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
  }
});
 类似资料:
  • 因此,我得到了一个字符串,它是我在一个类上实现的toJson方法的结果,并且在我的测试代码中确认它是我的类的正确Json表示。我的目标是使用Gson将此字符串转换为JsonObject并将其传递给构造函数。然而,我遇到了一个奇怪的问题。 这是我要调用的代码: 我以前在我的项目中的许多地方,在其他类中,都使用过完全相同的代码片段,而且效果很好。我甚至将其中一段功能代码复制到这个测试类中,并进行了尝试

  • 我有一个任务,我们要创造一个石头,纸,剪刀的游戏。它指定我们必须创建一个抽象的“工具”类,其中有三个子类:“ToolRock”、“ToolPaper”、“ToolScissors”。抽象类应该有一个“+getFeagnet():tool”函数(用斜体写成)。 我的假设是做一个像这样的抽象函数: RockTool类被指定为具有函数“+get弱点():tool”(不是用斜体写的),我的想法是创建一个覆

  • 我能够毫无问题地从一个定制的java对象返回一个jsonp(如下所示:http://www . concrete page . com/spring-4/spring-4-MVC-JSONP-example-with-rest-response body-response entity),但是当我试图在JSONP中返回一个字符串时,包装函数消失了 我正在做的事情: 呼叫服务: 退货: 预期结果:

  • 问题内容: 在python 3中,我可以设置参数并返回类型注释。例: 问题是我无法使用当前类(图形)的返回类型进行注释,该类型尚未定义。例: 这段代码有错误 这些注释对于记录文档以及允许IDE识别参数和返回类型都非常有用=>启用自动完成功能 UPD:所以我想到的是这是不可能的,或者需要一些我不喜欢的技巧,所以我决定使用 可以理解的文档,尽管这违反了规则。缺点是它不适用于IDE自动完成功能。 问题答

  • 我尝试了一些变体,但没有运气返回GraphQL中的地图。因此,我有以下两个对象: 我的模式如下: 有人能告诉我如何实现这一点,以便GraphQL神奇地处理这一点或另一种方法。 非常感谢!

  • 我正试图从使用observable转换下面的observable代码。使用可管道操作符创建到。 我已经尝试了下面的方法,但是我得到了一个转换错误,无法转换可观察的类型。看不见的。如有任何帮助,我们将不胜感激。