2016-07-18 26 views
8

Fragment Moje Relay/GraphQL zawiera dwa różne zapytania, z których oba zwracają obiekty tego samego typu, i często zachodzi pewne pokrywanie się zestawów wyników zwracanych przez którekolwiek z nich (i to jest całkiem w porządku z mnie). Widzę następujące ostrzeżenia w przeglądarce:Próba dodania identyfikatora już w GraphQLSegment

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) 

Czy ktoś może potwierdzić, że jest to rzeczywiście ze względu na mnie, widząc ten sam obiekt przekaźnika dwa razy? Jak mogę wyciszyć ostrzeżenie lub przynajmniej debugować go dalej?

+0

Czy w międzyczasie możesz znaleźć poprawkę? Otrzymuję to samo ostrzeżenie, gdy próbuję uzyskać szczegóły na temat moich jednostek typu o nazwie "Użytkownik", które mają listę zdefiniowaną przez "Role" (relację n do n). Wygląda na to, że ładowanie 'Role' dwa razy (odwiedzając dwa' Użytkownicy' z tą samą przypisaną rolą) uruchamia to ostrzeżenie. –

+0

@MichaelHilus, nic jeszcze, przepraszam –

Odpowiedz

0

Można powiedzieć bez sprawdzania kodu, ale możesz uruchomić swój nodeDefinition na swoim typie 2x. Jeśli zdefiniował globalIDField na najwyższym obiektu poziomie, tak jak poniżej:

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 
} 

)

Następnie należy odwołać się do innych obiektów, takich jak ten:

niech itemtype = new GraphQLObjectType ({ nazwa : "Pozycja", pola:() => ({ id: odGlobalId ("Przedmiot", obj => obj._id), // OR, nie oba .. id: { typ: nowy GraphQLNonNull (GraphQLID), rozwiązać (Obj) => obj._id } nazwa {typ: GraphQLString} URL: {typ: GraphQLString} stan {typ: GraphQLString} likesCount {typ: GraphQLInt} createdAt { typ: GraphQLString, resolve ... } }), interfejsy: [nodeInterface] })

Albo wydaje się działać. Jeśli chcesz udostępnić swój kod, chętnie go obejrzysz.