0

我是 graphql 的新手,特别是 graphql-java 我已经成功地完成了带有参数的查询,但是当我尝试发送一个变异查询时,架构甚至没有执行 datafetcher,就像服务器甚至没有对它进行评估一样。这是我的代码的一些片段。

DataFetcher nodeCreateDataFetcher = new DataFetcher(){
    public Object get(DataFetchingEnvironment environment) {

        Map source = (Map) environment.getSource();
        String alias = (String) source.get("alias");

        System.out.println(alias);
        //This statement adds a new node with a name on an alias class field
        Node node = getNodes.addNode(alias);
        return node;
    }
};

// Creates an InputobjectType
public GraphQLInputObjectType createNodeInputType(){
    return  newInputObject()
            .name("nodeInput")
            .field(newInputObjectField()
                    .name("alias")
                    .type(GraphQLString))
            .build();   
}

//Creates the Mutation schema
public GraphQLObjectType createMutation(){
    return newObject()
            .name("Mutation")
            .field(newFieldDefinition()
                .name("create")
                .type(createNodeType())
                .argument(newArgument()
                        .name("node")
                        .type(createNodeInputType())
                        .defaultValue("{alias: \"node4\"}"))
                .dataFetcher(nodeCreateDataFetcher))    
            .build();
}

所以我去找邮递员写这样的东西{create(node:{alias:"anything"})}这似乎是错误的我看到人们在graphql查询中大部分时间都在使用变量,但我正在尝试做简单的变异查询,然后从那里开始。我真的很感谢你的帮助。

4

1 回答 1

2

我只是忽略了规范的一个重要部分,实际上我必须在查询之前编写突变,例如mutation {create(node:{alias:"anything"})}

于 2017-03-31T02:17:29.320 回答