2017-12-22 8 views
11

Ich verwende ein Remote-Schema-Stitching auf meinem Middleware-Server. Ich bin in der Lage, das Schema remote auf Middleware-Server zu erhalten, definierte meine Route so auf Middleware-Server.So leiten Sie die Erweiterung von einem Server zum Middleware-Server weiter

app.use('/graphql', graphqlHTTP((request,res) => { 
const startTime = Date.now(); 
return { 
    schema: remoteSchema 
    graphiql: false, 
    extensions({ document, variables, operationName, result }) { 
    return { 
     // here I am not getting extensions which I have on my another server as below. 
     console.log(res); // this does not have additional info and response headers 
     console.log(result); // this only has response against the query 
    } 
    }; 
})); 

Ich erhalte das Ergebnis der Abfrage im Ergebnis aber nicht Antwort-Header und zusätzliche Informationen bekommen, die ein Teil der Verlängerung ist, die ich auf meinem anderen Server bin Hinzufügen wo Resolvern sind.

{ 
    "data": { 
     "records": { 
      "record": [{ 
        "id": 1, 
       }, 
       { 
        "id": 2, 
       } 
      ], 
     }, 
     "additionalInfo": {} 
    }, 
    "extensions": { 
     "info": {} 
    } 
} 

Was könnte das Problem sein? So füge ich Antwortheader und zusätzliche Informationen auf meinem anderen Server in Erweiterungen hinzu. Ich debugge unterhalb Code, wo Erweiterungsdaten verfügbar sind. Dies wird nicht an Middleware-Server weitergegeben.

Mein Bewerbungsablauf ist, dass ich Middleware-Route dann eine andere Server-Route mit Remote-Schema Stitching aufrufen. Ich möchte die Erweiterung, die ich auf einem anderen Server hinzufüge, an meinen Middleware-Server in der Antwort weiterleiten.

Antwort

2

haben Sie console.log() die Anfrage? Ich bin ziemlich sicher, dass alles, was Sie in der Erweiterungsfunktion in Bezug auf die auszugebenden Header erhalten, in der Anfrage enthalten ist, da es sich um Middleware auf dem Server handelt, die Antwort wird geändert, bevor sie an die nächste Funktion gesendet wird zurück zum Kunden.

extensions({ document, variables, operationName, result }) { 
    // console.log the request object to check the header information from the request. 
    console.log(request); 
    return { 
     // This will fill the information key with all the headers in the request. 
     information: reaquest.header 
    }; 
} 
+0

Die ':' und '=>' sind nicht notwendig. Der ursprüngliche Beispielcode verwendet die Objekt-Literal-Kurzschrift für Methodendefinitionen. – aaronjkrause

+0

@aaronjkrause Ich bin gerade in der Dokumentation darüber gestolpert, danke, dass du darauf hinweist. – RickyM

+0

@RickyM Ich sehe die Anfrage aber 'apiHeaders: [], additionalInfo: {},' sind dort leer. –

Verwandte Themen