Facebook graph api 在Node.js中正确定义graphQLSchema

Facebook graph api 在Node.js中正确定义graphQLSchema,facebook-graph-api,graphql,graphql-js,Facebook Graph Api,Graphql,Graphql Js,第一次做graphQL。我搜索了资源,但没有找到有用的资源。 我已经编写了以下模式,从另一篇stackoverflow文章中得到了一些帮助 schema.js function getDataFromUrl(){ return [ { "EventCode": "ET00029280", "EventType": "CT", "Event

第一次做graphQL。我搜索了资源,但没有找到有用的资源。 我已经编写了以下模式,从另一篇stackoverflow文章中得到了一些帮助

schema.js

function getDataFromUrl(){
    return [
                {
                    "EventCode": "ET00029280",
                    "EventType": "CT",
                    "EventTitle": "OYSTERS Beach Park",
                    "VenueName": "Newexcelsior",
                    "VenueRegion": "Mumbai"
                },
                {
                    "EventCode": "ET00030629",
                    "EventType": "CT",
                    "EventTitle": "Stand-Up Comedy: The Trial Room",
                    "VenueName": "Newexcelsior",
                    "VenueRegion": "Mumbai"
                }
    ];
}

const eventType = new GraphQLObjectType({
  name: 'Event',
  fields: {
    EventTitle: {
      type: GraphQLString,
      description: 'Event Title'

    },
  },
});

const eventListType = new GraphQLObjectType({
  name: 'EventList',
  fields: {
    events: {
      type: new GraphQLList(eventType),
      description: 'List of items',
    },
  },
});

const schema = new GraphQLSchema({
    query: new GraphQLObjectType({
        name: 'Query',
        fields: {
           eventList: {
                type: new GraphQLList(eventListType),
                resolve: () =>  getDataFromUrl(),
           }
        }
    })
});

module.exports = schema;
当我询问

{
  eventList {
    events {
      EventTitle
    }
  }
}
我得到的答复是:

{
  "data": {
    "eventList": [
      {
        "events": null
      },
      {
        "events": null
      }
    ]
  }
}
我期望在我的模式中有一些变化,但是我期望的响应是

{
  "data": [
    {
      "EventTitle": "OYSTERS Beach Park"
    },
    {
      "EventTitle": "Stand-Up Comedy: The Trial Room"
    }
  ]
}

还请提供一些我学习基础知识的链接。

现在最让你困惑的是如何定义列表。不需要定义单独的类型EventList——当您指定
graphqlist(someOtherType)
时,您已经告诉GraphQL需要该特定类型的数组。当前架构需要一个类型数组的数组。因为您要传递的数据的结构与模式不匹配,GraphQL找不到名为EventTitle的字段进行匹配,因此返回null

这种情况下的修复方法是完全去掉
eventListType
,并将
eventList
字段的
type
改为
eventType

对于GraphQL.js,就学习基础知识而言,它们可能是您的最佳选择。唯一的问题是它们所包含的例子太基本了。下面是一个在GitHub上的应用程序,您可以签出它来查看GraphQL的运行情况

如果你刚开始,我也会高度推荐使用阿波罗的。即使您不在客户端使用Apollo,graphql工具也可以轻松地设置服务器。您的模式将更具可读性,因为您可以将其编写为字符串,而不是像vanilla GraphQL.js中那样的对象。除了GraphQL之外,您还可以轻松地设置一个,这使得调试更加容易:)