Контекст на сервере GraphQL Apollo работает бесконечно

Мне нужны значения заголовков на сервере GraphQl Apollo в NodeJS, и для этого я использовал в нем функцию контекста, но она выполняется бесконечное количество раз.

Он бесконечно печатает «abcd» в консоли.

консоль:

код:

      const server = new ApolloServer({
  schema: buildSubgraphSchema([{ typeDefs, resolvers }]),
  context:((req)=>{
    // some code
    console.log("abcd");
    return "hello"
  })
});

весь файл сервера:

      const dotenv = require('dotenv')
dotenv.config({ path: './.env' })
const mongoose = require("mongoose");
const { typeDefs } = require("./schema/user");
const { resolvers } = require("./resolvers/resolver");
const { ApolloServer } = require("apollo-server");
const {buildSubgraphSchema} = require('@apollo/subgraph')


const server = new ApolloServer({
  schema: buildSubgraphSchema([{ typeDefs, resolvers }]),
  context:((req)=>{
    // some code
    console.log("abcd");
    return "hello"
  })
});


const PORT = process.env.PORT || 5000;
mongoose.connect(
  process.env.MONGO_URI,
  { useNewUrlParser: true }
);
const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", function () {
  console.log("Connected to MongoDB");
  server.listen(PORT, () => console.log(`Server started on port ${PORT}`));
});

1 ответ

Функция контекста запускается для каждого запроса, сделанного к серверу Apollo.

Если вы используете такой инструмент, как GraphQL Playground или Apollo Studio, они будут опрашивать схему с сервера через заданный интервал, обычно в секунду. Проверьте, подключены ли какие-либо из этих инструментов к вашему серверу. Если да, остановите их (или закройте их вкладки), чтобы посмотреть, исчезнет ли «проблема».

Если повторное ведение журнала прекращается при отключении этих инструментов, то не о чем беспокоиться, ваш сервер на самом деле просто работает так, как ожидалось.

Другие вопросы по тегам