如何在 graphql 上正确创建 Id 字段以符合中继要求?
How to properly create the Id field on a graphql to be relay compliant?
我正在关注 relay+graphql 教程,但我对这段代码感到困惑:
const GraphQLTodo = new GraphQLObjectType({
name: 'Todo',
fields: {
id: globalIdField('Todo'),
text: {
type: GraphQLString,
resolve: (obj) => obj.text,
},
complete: {
type: GraphQLBoolean,
resolve: (obj) => obj.complete,
},
},
interfaces: [nodeInterface],
});
关于text和complete field的解析,obj是从哪里来的?是查询中的 obj 参数吗?还有,如何从查询中解析 id?难道我不用解决吗?例如,这是 id 字段代码:
id: {
id: globalIdField('Todo'),
resolve: (obj) => obj.id,
}
上面的代码行得通吗,是不是多余的?如何正确创建 Id 字段以符合中继要求?
obj
是记录本身,通常采用您从持久存储中获得的任何格式。在本例中,它是一个 Todo
对象,至少有两个属性:text
和 complete
。这使得解析函数变得微不足道。存在解析函数,因此您可以执行更复杂的操作,如下所示:
fullName: {
type: GraphQLString,
resolve: (obj) => obj.firstName + ' ' + obj.surname,
}
对于 Relay compliant id,我认为您不需要做任何事情。 globalIdField
为你做。
我正在关注 relay+graphql 教程,但我对这段代码感到困惑:
const GraphQLTodo = new GraphQLObjectType({
name: 'Todo',
fields: {
id: globalIdField('Todo'),
text: {
type: GraphQLString,
resolve: (obj) => obj.text,
},
complete: {
type: GraphQLBoolean,
resolve: (obj) => obj.complete,
},
},
interfaces: [nodeInterface],
});
关于text和complete field的解析,obj是从哪里来的?是查询中的 obj 参数吗?还有,如何从查询中解析 id?难道我不用解决吗?例如,这是 id 字段代码:
id: {
id: globalIdField('Todo'),
resolve: (obj) => obj.id,
}
上面的代码行得通吗,是不是多余的?如何正确创建 Id 字段以符合中继要求?
obj
是记录本身,通常采用您从持久存储中获得的任何格式。在本例中,它是一个 Todo
对象,至少有两个属性:text
和 complete
。这使得解析函数变得微不足道。存在解析函数,因此您可以执行更复杂的操作,如下所示:
fullName: {
type: GraphQLString,
resolve: (obj) => obj.firstName + ' ' + obj.surname,
}
对于 Relay compliant id,我认为您不需要做任何事情。 globalIdField
为你做。