Контекст на сервере 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, они будут опрашивать схему с сервера через заданный интервал, обычно в секунду. Проверьте, подключены ли какие-либо из этих инструментов к вашему серверу. Если да, остановите их (или закройте их вкладки), чтобы посмотреть, исчезнет ли «проблема».
Если повторное ведение журнала прекращается при отключении этих инструментов, то не о чем беспокоиться, ваш сервер на самом деле просто работает так, как ожидалось.