NodeJS GraphQL Apollo服务器中的上下文无限运行

gstyhher  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(171)

我希望在NodeJS中的GraphQl Apollo服务器中的头值,为此我在其中使用了上下文函数,但它运行了无限次。
在控制台中无限打印“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}`));
});
wydwbb8l

wydwbb8l1#

对Apollo服务器发出的每个请求都运行上下文函数。
如果你使用的是GraphQL Playground或Apollo Studio这样的工具,它们会在设定的时间间隔内从服务器轮询模式,通常是一秒。检查您是否有任何这些工具连接到您的服务器。如果是这样,请停止他们(或关闭他们的标签),看看“问题”是否消失。
如果在这些工具断开连接时停止重复的日志记录,那么没有什么可担心的,您的服务器实际上只是按预期工作。

相关问题