如何在graphql上正确创建Id字段以符合中继?

时间:2017-03-25 16:37:39

标签: graphql relayjs relay graphql-js

我正在关注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],
});

关于文本和完整字段的解析,obj来自哪里?是来自查询的obj参数?而且,我如何从查询中解析id?我不需要解决它吗?例如,这是id字段代码:

id: {
  id: globalIdField('Todo'),
  resolve: (obj) => obj.id, 
}

上述代码是否有效并且不是多余的?如何正确创建Id字段以符合中继?

1 个答案:

答案 0 :(得分:1)

obj是记录本身,通常采用从持久存储中获取的任何格式。在这种情况下,它是一个Todo对象,至少有两个属性:textcomplete。这使得解析功能变得微不足道。存在解析函数,因此您可以执行更复杂的操作,如下所示:

fullName: {
  type: GraphQLString,
  resolve: (obj) => obj.firstName + ' ' + obj.surname,
}

对于符合Relay标准的ID,我认为您不需要做任何事情。 globalIdField为你做到了。