让我们说,例如,我想使用GraphQL JavaScript界面定义典型的论坛消息类型:
import {
GraphQLString,
GraphQLObjectType,
} from 'graphql';
const MessageType = new GraphQLObjectType({
name: 'Message',
fields: {
text: { type: GraphQLString },
comments: new GraphQLList(MessageType),
},
});
JavaScript编译器(好吧,解释器)会抱怨这个。它会说MessageType is undefined
。
我们都知道可以使用GraphQL语言定义这样的类型:
type Message {
text: String
comments: [Message]
}
如何使用GraphQL纯JavaScript接口定义这样的类型?
答案 0 :(得分:3)
嗯,答案很简单。
您只需将thunk(不带参数的函数)作为field
字段传递,而不是传递纯JavaScript对象。
只有在已经定义了类型时才会执行该函数,因此,它将起作用。
结果代码如下所示:
import {
GraphQLString,
GraphQLObjectType,
} from 'graphql';
const MessageType = new GraphQLObjectType({
name: 'Message',
fields: () => ({ // <-- Notice the function definition
text: { type: GraphQLString },
comments: new GraphQLList(MessageType),
}),
});