Не могу получить доступ к требованию из контекста - PullRequest
0 голосов
/ 17 ноября 2018

Я использую Koa.js с Apollo Server apollo-server-koa.

Я отладил { req }, и значение не определено.Я следовал за документацией, но все еще не понял.Даже если я получаю доступ к req.headers.authorization и помещаю его в HTTP-заголовок graphql gui:

{
  "authorization": "bla"
}

, значение все равно undefined.

app.ts:

import cors from "@koa/cors";
import Koa from "koa";

import config from "./config/environtment";
import server from "./server";

const PORT: number = config.port;

async function bootstrap() {
  try {
    const app: Koa = new Koa();

    server.applyMiddleware({ app });

    app
      .use(cors())
      .listen(PORT, () =>
        console.log(
          `Server running on http://localhost:${PORT}${server.graphqlPath}`,
        ),
      );
  } catch (error) {
    console.error(error);
  }
}

bootstrap();

server.ts:

import { ApolloServer } from "apollo-server-koa";

import typeDefs from "./graphql/schema";
import resolvers from "./graphql/resolvers";
import context from "./graphql/context";

export default new ApolloServer({
  typeDefs,
  resolvers,
  context,
});

context.ts

export default ({ req }) => {
  console.log(req) // return undefined.
  return {
    test: "test",
  };
};

1 Ответ

0 голосов
/ 17 ноября 2018

Документы относятся к apollo-server, который использует apollo-server-express под капотом.Я считаю, что для apollo-server-koa параметры передаются в объекте с полем ctx, в котором содержится Koa Context .Поэтому должно работать следующее:

export default ({ ctx }) => {
  console.log(ctx.request)
  console.log(ctx.response)
  return {};
};
...