如何在GraphQL中创建自定义对象列表
问题描述:
我目前正在玩Facebook的一堆新技术。如何在GraphQL中创建自定义对象列表
我有一个GraphQL模式的小问题。 我有这个模型的对象:
{
id: '1',
participants: ['A', 'B'],
messages: [
{
content: 'Hi there',
sender: 'A'
},
{
content: 'Hey! How are you doing?',
sender: 'B'
},
{
content: 'Pretty good and you?',
sender: 'A'
},
];
}
现在我想为此创建GraphQL模型。我这样做:
var theadType = new GraphQLObjectType({
name: 'Thread',
description: 'A Thread',
fields:() => ({
id: {
type: new GraphQLNonNull(GraphQLString),
description: 'id of the thread'
},
participants: {
type: new GraphQLList(GraphQLString),
description: 'Participants of thread'
},
messages: {
type: new GraphQLList(),
description: 'Messages in thread'
}
})
});
我知道有更优雅的方式来构造数据的第一位。但为了试验,我想这样尝试。
除了我的消息数组之外,一切正常,因为我没有指定数组类型。我必须指定哪种数据进入该数组。但由于它是一个自定义对象,我不知道要传入GraphQLList()。
任何想法如何解决这个问题,除了创建一个消息自己的类型?
答
您可以定义自己的自定义messageType
你定义theadType
以同样的方式,然后你就new GraphQLList(messageType)
指定消息列表的类型。
答
我不认为你可以在GraphQL中做到这一点。认为这与GraphQL原理有点矛盾,即要求每个组件中的“您需要”字段不要求“全部”。
当应用程序扩展时,您的方法会挑战更高的数据负载。我知道,为了测试库的目的看起来有点太多,但它似乎就是这样设计的。不允许在当前GraphQL库(0.2.6)类型有:
- GraphQLSchema
- GraphQLScalarType
- GraphQLObjectType
- GraphQLInterfaceType
- GraphQLUnionType
- GraphQLEnumType
- GraphQLInputObjectType
- GraphQLList
- GraphQLNonNull
- GraphQLInt
- GraphQLFloat
- GraphQLString
- GraphQLBoolean
- GraphQLID
+1
为什么downvote?正如彼得·希尔顿所说的,你必须使用GraphQLList来实现你想要的,但你明确地说过你并不需要 – MaC
感谢你的回应,我遇到了一个问题“..必须有一个子选择。”当我要求子元素。你能给出一个获取查询来获取消息的例子吗? –