Używam zdalnego szewowania schematu na moim serwerze pośredniczącym. Mogę zdalnie uzyskać schemat na serwerze oprogramowania pośredniego, zdefiniowałem moją trasę w ten sposób na serwerze oprogramowania pośredniego.Jak przekazać rozszerzenie z jednego serwera do serwera oprogramowania pośredniego
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
}
};
}));
otrzymuję wynik zapytania w wyniku ale nie dostaję nagłówki odpowiedzi i informacje dodatkowe, które jest częścią rozszerzenia, które dodaję na innym moim serwerze gdzie przeliczniki istnieją.
{
"data": {
"records": {
"record": [{
"id": 1,
},
{
"id": 2,
}
],
},
"additionalInfo": {}
},
"extensions": {
"info": {}
}
}
Co może być problemem? W ten sposób dodaję nagłówki odpowiedzi i dodatkowe informacje na moim innym serwerze w rozszerzeniach. Debuguję poniżej kodu, w którym dostępne są dane rozszerzeń. To nie jest przekazywane do serwera oprogramowania pośredniego.
extensions({ document, variables, operationName, result }) {
result.data.additionalInfo = res.additionalInfo;
// extension to write api headers in response
var headerObj = {};
res.apiHeaders.forEach(element => {
merge(headerObj, element);
});
result.headerObj = headerObj;
return {
information: headerObj
};
}
Mój przepływ aplikacji polega na tym, że nazywam trasę pośrednią, a następnie inną trasą serwera, korzystając ze zdalnego szewienia schematu. Chcę, aby rozszerzenie, które dodaję na innym serwerze, powinno zostać przekazane do mojego serwera oprogramowania pośredniego w odpowiedzi.
":" i "=>" nie są konieczne. Oryginalny przykładowy kod używa skróconego dosłownie obiektu dla definicji metod. – aaronjkrause
@aaronjkrause Właśnie natknąłem się na to w dokumentacji, dzięki za wskazanie tego. – RickyM
@RickyM Widzę żądanie, ale 'apiHeaders: [], additionalInfo: {},' są tam puste. –