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

如何在graphql上正确创建符合中继的Id字段?,graphql,relayjs,relay,graphql-js,Graphql,Relayjs,Relay,Graphql Js,我正在学习继电器+图形QL教程,我对以下代码感到困惑: const GraphQLTodo = new GraphQLObjectType({ name: 'Todo', fields: { id: globalIdField('Todo'), text: { type: GraphQLString, resolve: (obj) => obj.text, }, complete: { type: GraphQL

我正在学习继电器+图形QL教程,我对以下代码感到困惑:

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字段?

obj是记录本身,通常采用从持久性存储中获得的任何格式。在本例中,它是一个Todo对象,至少具有两个属性:text和complete。这使得解析函数变得微不足道。解析函数的存在使您可以执行以下更复杂的操作:

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

对于中继兼容id,我认为您不需要做任何事情。globalIdField为您提供此功能。

您所说的持久存储是什么意思?数据库?是的,数据库SQL或其他数据库通常是存储数据的地方。在一些GraphQL教程中,我看到它被简化为没有持久性的内存中数据结构。这通常只是对教程的简化。谢谢你的时间和解释,帮助很大。