Я использую удаленное сшивание схемы на моем сервере middlware. Я могу получить схему удаленно на сервере промежуточного уровня, определив свой маршрут, как это, на сервере промежуточного программного обеспечения.
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
}
};
}));
Я получаю результат запроса в результате, но не получаю заголовки ответов и дополнительную информацию, которая является частью расширения, которое я добавляю на свой другой сервер, где есть resolvers.
{
"data": {
"records": {
"record": [{
"id": 1,
},
{
"id": 2,
}
],
},
"additionalInfo": {}
},
"extensions": {
"info": {}
}
}
В чем может быть проблема? Вот как я добавляю заголовки ответов и дополнительную информацию о моем другом сервере в расширениях. Я отлаживаю ниже код, в котором доступны данные расширения. Это не передается серверу промежуточного уровня.
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
};
}
Мой поток приложений - это то, что я нахожу маршрут промежуточного программного обеспечения, а затем другой маршрут сервера, используя удаленное сшивание схем. Я хочу, чтобы расширение, которое я добавляю на другой сервер, должно быть перенаправлено на мой сервер промежуточного уровня в ответ.