繁体   English   中英

如何在graphql中使用中间件

[英]How to use middleware in graphql

我的目标是使用winston (这是一个日志程序)。 随着时间的推移,我会添加其他中间件,inshallah

这是我的代码( index.js | 主 js 文件):

import { ApolloServer } from "apollo-server";
import { typeDefs } from "./graphql/typeDefs/typeDefs";
import { resolvers } from "./graphql/resolvers/resolvers";

const server = new ApolloServer({ typeDefs, resolvers,
  csrfPrevention: true, 
});

server.listen().then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

package.json

  "devDependencies": {
    "typescript": "^4.8.2"
  },
  "dependencies": {
    "apollo-server": "^3.10.2",
    "winston": "^3.8.1"
  }

console.log(more_info?.more_info.name:'')数据可能还没有准备好。 但是你提问的方式不是很合适,请下次通过编辑器添加代码而不是截图,以便人们轻松回答。

我发现该资源很有用。 但是,我注意到这个资源代码的主要 function 没有被调用,所以我使用了立即调用的 Function 表达式 (IIFE) 方法来调用它,它按预期工作。

我的代码:

(async function startApolloServer(typeDefs, resolvers) {
  const app = express();

  app.use(morgan("combined"));
  // app.use(helmet());

  const httpServer = http.createServer(app);

  const server = new ApolloServer({
    typeDefs,
    resolvers,
    csrfPrevention: true,
    cache: "bounded",
    plugins: [
      ApolloServerPluginDrainHttpServer({ httpServer }),
      ApolloServerPluginLandingPageLocalDefault({ embed: true }),
    ],
  });

  await server.start();
  server.applyMiddleware({ app, path: "/" });

  await new Promise<void>((resolve) =>
    httpServer.listen({ port: 4000 }, resolve)
  );
  console.log(`🚀 Server ready at http://localhost:4000${server.graphqlPath}`);
})(typeDefs, resolvers);

温斯顿 TS 错误:

当我尝试使用 winston.createLogger function 的 level 属性中的文档中提到的级别数组时,出现 TS 错误。 因此,我对节点模块做了一个小改动

代码 文件位置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM