Facebook graph api 在Node.js中正确定义graphQLSchema
第一次做graphQL。我搜索了资源,但没有找到有用的资源。 我已经编写了以下模式,从另一篇stackoverflow文章中得到了一些帮助 schema.jsFacebook 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
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之外,您还可以轻松地设置一个,这使得调试更加容易:)