Мой запрос по токену возвращает ноль - PullRequest
0 голосов
/ 07 апреля 2019

После того, как токен был сохранен в локальном хранилище, у меня есть функция, где я могу загрузить данные currentStudent, когда токен проверен, но функция возвращает ноль.

это мой код распознавателя

  getCurrentStudent: async (
      root,
      { studentId },
      { currentStudent, Student }
    ) => {
      if (!currentStudent) {
        return null;
      }
      const student = await Student.findOne({
        studentId: currentStudent.studentId
      });
      return student;
    }

и затем я попытался создать контекст с экземпляром ApolloServer

const server = new ApolloServer({
  typeDefs,
  resolvers,
  context: async ({ req }) => {
    const token = req.headers["authorization"];
    if (token !== null) {
      try {
        const currentStudent = await jwt.verify(token, process.env.SECRET);
        req.currentStudent = currentStudent;
      } catch (err) {
        console.log(err);
      }
    }
  }
});

, это должно проверить мой токен и вернуть currentUser.

1 Ответ

0 голосов
/ 07 апреля 2019

Функция, которую вы передаете в контекст, должна возвращать объект контекста или Обещание, которое разрешается в один:

context: async ({ req }) => {
  const token = req.headers["authorization"];
  let currentStudent;
  if (token !== null) {
    try {
      const currentStudent = await jwt.verify(token, process.env.SECRET);
      currentStudent = currentStudent;
    } catch (err) {
      console.log(err);
    }
  }
  return {
    currentStudent,
  };
}

Затем вы можете использовать этот контекст внутри любого из ваших преобразователей, например:

const resolvers = {
  Query: {
    currentStudent: (root, args, context) => {
      return context.currentStudent;
    }
  }
};
...