我的 Relay/GraphQL 片段包含两个不同的查询,两者都返回相同类型的对象,并且两者返回的结果集之间通常存在一些重叠(这对我来说完全没问题)。我在浏览器中看到以下警告:

Attempted to add an ID already in GraphQLSegment: client:client:15254944391:UmV2aWV3ZXI6MQ== 
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 52 to (0, 2) 
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 53 to (0, 2) 
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 54 to (0, 2) 
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 55 to (0, 2) 

有人可以确认这确实是因为我两次看到同一个 Relay 对象吗?如何消除警告或至少进一步调试它?

请您参考如下方法:

不用看代码就可以知道,但你可能正在你的类型 2x 上运行你的nodeDefinition。如果您在顶级对象上定义了 globalIDField,如下所示:

let {nodeInterface, nodeField } = nodeDefinitions( 
(globalId) => { 
  let { type, id } = fromGlobalId(globalId) 
  console.log('NodeDefinitions (globalId), id:', id) 
  console.log('NodeDefinitions (globalId), type:', type) 
 
  if (type === 'TopLevelObject') { 
    return toplevelobject 
  } 
  return null 
}, 
(obj) => { 
  if (obj instanceof TopLevelObject) { 
    return toplevelobjectType  
  }  
  return null  
} 

)

那么你应该像这样引用任何其他对象:

让 itemType = new GraphQLObjectType({ 名称:'项目', 字段:() => ({ id: fromGlobalId('Item', obj => obj._id), //或者,不是两者都... ID: { 类型:新 GraphQLNonNull(GraphQLID), 解析:(obj) => obj._id }, 名称:{ 类型:GraphQLString }, url: { 类型: GraphQLString }, 状态:{ 类型:GraphQLString }, likesCount: { 类型: GraphQLint }, 创建于:{ 类型:GraphQLString, 解决: ... } }), 接口(interface):[节点接口(interface)] })

似乎都有效。如果您想分享您的代码,很乐意查看它。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!