首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用GraphQLObjectType的Hello world

使用GraphQLObjectType的Hello world
EN

Stack Overflow用户
提问于 2016-04-21 12:11:12
回答 2查看 999关注 0票数 0

我正在执行下面的代码,结果是:

代码语言:javascript
复制
{TestPojo={id=null, name=null}}

我期望得到的结果是{TestPojo={id="1", name="Jack"}}。我遗漏了什么?

代码语言:javascript
复制
import static graphql.Scalars.GraphQLString;
import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition;
import static graphql.schema.GraphQLObjectType.newObject;

import java.util.Map;

import graphql.GraphQL;
import graphql.schema.DataFetcher;
import graphql.schema.DataFetchingEnvironment;
import graphql.schema.GraphQLObjectType;
import graphql.schema.GraphQLSchema;

public class HelloWorld {
    public static void main(String[] args) {
        // sub schema to be added to parent schema
        GraphQLObjectType testPojo = newObject().name("TestPojo")
                                                .description("This is a test POJO")
                                                .field(newFieldDefinition().name("id").type(GraphQLString).build())
                                                .field(newFieldDefinition().name("name").type(GraphQLString).build())
                                                .build();
        // parent schema
        GraphQLObjectType queryType = newObject().name("helloWorldQuery")
                                                 .field(newFieldDefinition().name(testPojo.getName())
                                                                            .type(testPojo)
                                                                            .dataFetcher(new DataFetcher() {
                                                                                @Override
                                                                                public Object get(DataFetchingEnvironment arg0) {
                                                                                    Object a = new GrapgQLSampleController()
                                                                                                       .greeting2();
                                                                                    return a;
                                                                                }
                                                                            })
                                                                            .build())
                                                 .build();


        GraphQLSchema schema = GraphQLSchema.newSchema().query(queryType).build();
        Map<String, Object> result = (Map<String, Object>) new GraphQL(schema).execute("{TestPojo {id,name}}")
                                                                              .getData();
        System.out.println(result);
        // Prints: {TestPojo={id=null, name=null}}
    }

    /**
     * service method 2
     *
     * @return
     */
    public TestPojo greeting2() {
        return new TestPojo("1", "Jack");
    }

    // inner pojo
    class TestPojo {
        public String id;
        public String name;

        TestPojo(String id, String name) {
            this.id = id;
            this.name = name;
        }
    }
}
EN

回答 2

Stack Overflow用户

发布于 2017-07-10 18:11:04

尝试在TestPojo类上添加getter方法,因为这些方法在类上声明时将被调用。否则,在现场定义您自己的DataFetcher

代码语言:javascript
复制
class TestPojo {
    public final String id;
    public final String name;

    TestPojo(String id, String name) {
        this.id = id;
        this.name = name;
    }

    String getId() {
        return id; 
    }

    String getName() { 
        return name;
    }
}
票数 0
EN

Stack Overflow用户

发布于 2017-01-04 02:15:39

试图通过修复代码来变得更具教育性。请注意,静态内容来自.staticValue中的任何内容(“X”)

代码语言:javascript
复制
    GraphQLObjectType testPojo = newObject().name("TestPojo")
                                            .description("This is a test POJO")
                                            .field(newFieldDefinition().type(GraphQLString).name("id").staticValue("Test1"))
                                            .field(newFieldDefinition().type(GraphQLString).name("name").staticValue("pojo1"))
                                            .build();

    GraphQLSchema schema = GraphQLSchema.newSchema().query(testPojo).build();
    Map<String, Object> result = (Map<String, Object>) new GraphQL(schema).execute("{id,name}")
                                                                          .getData();
    System.out.println(result);

将打印{id=Test1,name=pojo1}

当我有时间时,我可以使用DataFetcher更新示例

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36759503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档