2016-07-18 4 views
8

My Relay/GraphQL 조각에는 동일한 유형의 객체를 반환하는 두 개의 서로 다른 쿼리가 포함되어 있으며, 둘 중 하나에 의해 반환 된 결과 집합간에 일부 중복이있는 경우가 있습니다 나를). 나는 브라우저에서 다음과 같은 경고를 참조하십시오이미 GraphQLSegment에 ID를 추가하려고 시도했습니다.

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) 

사람은 두 번 같은 릴레이 개체를보고이 때문에 나에게 참으로 확인 할 수 있나요? 경고를 없애거나 최소한 디버깅을하려면 어떻게합니까?

+0

한편이 문제를 해결할 수 있습니까? 'Role'의 각리스트가 정의 된 (n - n 릴레이션) 'User'라는 유형의 엔티티에 대한 세부 정보를 얻으려고 할 때도 동일한 경고가 표시됩니다. 'Role '을 두 번로드하면 (같은 역할이 할당 된 두 개의'Users '를 방문하는 것)이 경고를 표시합니다. –

+0

@MichaelHilus, 아직은, 미안 해요. –

답변

0

코드를 보면 알 수 있지만 유형 2x에서는 nodeDefinition을 실행 중일 수 있습니다. 당신이 당신의 최상위 개체의 globalIDField을 정의과 같이하는 경우 :

하게 나타내고 itemtype = 새로운 GraphQLObjectType ({ 이름 :

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 
} 

는)

그런 다음이 같은 다른 개체를 참조한다 : ID : { ID : fromGlobalId ('Item', obj => obj._id), // ID : { 유형 : new GraphQLNonNull (' GraphQLID), 해결 (OBJ) => obj._id } 이름 {유형 : GraphQLString} URL : {유형 : GraphQLString}의 상태 {유형 : GraphQLString} likesCount {유형 : GraphQLInt} createdAt { 유형 : GraphQLString, 해결 ... } }), 인터페이스 : [nodeInterface] })

중 하나가 작동하는 것 같다. 코드를 공유하고 싶다면 그것을 보아서 기쁩니다.

관련 문제