Java 在返回时将JsonObject分解为GraphQL类型
Vertx是json的忠实粉丝,我也是第一流公民。我将jsonb列存储在postgres中,作为我的主要数据存储机制。有点像这样:Java 在返回时将JsonObject分解为GraphQL类型,java,json,scala,graphql,vert.x,Java,Json,Scala,Graphql,Vert.x,Vertx是json的忠实粉丝,我也是第一流公民。我将jsonb列存储在postgres中,作为我的主要数据存储机制。有点像这样: 创建桌面游戏( id varchar(16)非空默认下一个\u id()主键, 数据jsonb不为空 ); 我检索数据,处理json对象,然后将其返回到浏览器。效果很好 虽然我也在尝试使用GraphQL,但似乎无法将json对象转换为GraphQL类型。e、 g.我将这些数据存储在数据库中: {"name": "dominion&qu
创建桌面游戏(
id varchar(16)非空默认下一个\u id()主键,
数据jsonb不为空
);
我检索数据,处理json对象,然后将其返回到浏览器。效果很好
虽然我也在尝试使用GraphQL,但似乎无法将json对象转换为GraphQL类型。e、 g.我将这些数据存储在数据库中:
{"name": "dominion", "createdBy": "Donald X. Vaccarino", "id": 233}
这是graphql类型:
类型游戏{
id:长,
名称:String,
createdBy:String,
createdAt:DateTime,
deletedAt:DateTime
}
这个graphql查询返回一个空项列表,因为jsonArray中的jsonObject(game)没有被分解成game
类型:
类型查询{
allGames(secureOnly:Boolean=false):[游戏]
}
但是,如果我使用json作为查询结果类型,则会显示游戏列表:
类型查询{
所有游戏(secureOnly:Boolean=false):[JSON]
}
但是,问题是graphql模式中现在没有类型信息。无法让客户端知道JSON
对象中的属性
我的数据提取程序具有以下类型:
DataFetcher[CompletionStage[JsonArray]]
有没有想过如何在代码中返回json并让graphql响应返回游戏类型?默认的graphql数据获取程序是
PropertyDataFetcher
如果要支持Vert.xJsonObject
和JsonArray
,则必须将GraphQL Java配置为使用VertxPropertyDataFetcher:
RuntimeWiring.Builder builder = RuntimeWiring.newRuntimeWiring();
builder.wiringFactory(new WiringFactory() {
@Override
public DataFetcher<Object> getDefaultDataFetcher(FieldWiringEnvironment environment) {
return VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
}
});
runtimewilling.Builder=runtimewilling.newruntimewilling();
builder.wiringFactory(新wiringFactory(){
@凌驾
公共数据获取程序getDefaultDataFetcher(FieldWiringEnvironment环境){
返回VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
}
});
默认的GraphQL数据获取程序是PropertyDataFetcher
如果要支持Vert.xJsonObject
和JsonArray
,则必须将GraphQL Java配置为使用VertxPropertyDataFetcher:
RuntimeWiring.Builder builder = RuntimeWiring.newRuntimeWiring();
builder.wiringFactory(new WiringFactory() {
@Override
public DataFetcher<Object> getDefaultDataFetcher(FieldWiringEnvironment environment) {
return VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
}
});
runtimewilling.Builder=runtimewilling.newruntimewilling();
builder.wiringFactory(新wiringFactory(){
@凌驾
公共数据获取程序getDefaultDataFetcher(FieldWiringEnvironment环境){
返回VertxPropertyDataFetcher.create(environment.getFieldDefinition().getName());
}
});
@andrewjames,谢谢你的关注。我改变了一些原始形式的代码,但忘了把那个地方改成well@andrewjames,谢谢你接过来。我改变了一些原始形式的代码,也忘了改变那个地方