【问题标题】:GraphQL - Nested MethodsGraphQL - 嵌套方法
【发布时间】:2017-09-05 23:51:52
【问题描述】:

我是 GraphQL 的新手,想知道是否可以为类型成员键入单独的方法

代码

var express = require('express');
var graphqlHTTP = require('express-graphql');

var { buildSchema } = require('graphql');

var schema = buildSchema(`
    type Query {
        beitraege: Beitrag
    }

    type Beitrag {
        beitr_name: String
        erst_name: String
    }
`);

var root = {

    // This is the part that does not work
    Beitrag: () => {

        beitr_name: () => {
            return "Foo";
        };

        erst_name: () =>  {
            return "Bar";
        }
    },

};

var app = express();

app.use("/graphql", graphqlHTTP({
    schema: schema,
    rootValue: root,
    graphiql: true,
}));

app.listen(3000, "0.0.0.0", () => {
    console.log("Started on port 3000");
});

这不起作用,因为 GraphQL 似乎不允许支持类型成员的单个方法。所以我在测试这个时得到null。我的问题是:

是否有可能以这种方式嵌套方法,或者我每次进行查询时都必须返回两个字符串?

编辑:

在 NodeJS GraphiQL 中测试

输入查询

{
  beitraege {
    beitr_name
    erst_name
  }
}

输出

{
  "data": {
    "beitraege": null
  }
}

【问题讨论】:

  • 当您说“现在可以工作”时,您的意思是“不工作”吗?
  • 另外,你能把所有的代码都放进去,以便我们重现你所看到的吗?此外,您还没有真正说明您所看到的内容。

标签: javascript node.js graphql


【解决方案1】:

我错了:

而不是Beitrag: () =>,它必须是beitraege: () =>,因为我不想定义类型成员而是模式成员。我猜。

【讨论】:

  • 严格来说,beitraegeQuery 类型的字段。 GraphQL 模式并没有真正的成员,只有类型。 Query 是一种特殊类型,需要作为入口点存在。非标量类型(又名 GraphQL“对象”)有字段,每个字段都必须有一个类型。标量类型(例如String)没有字段。
猜你喜欢
  • 2021-01-29
  • 2019-07-15
  • 2019-08-24
  • 2020-12-02
  • 2018-12-08
  • 2020-06-14
  • 2017-10-29
  • 2019-04-18
  • 2022-11-02
相关资源
最近更新 更多