Источник данных не определен при запуске сервера Apollo GraphQL

1
7

Я получаю datasource undefined на resolvers при попытке запроса getTracking.

У меня есть класс FedexAPI, который расширяет RESTDataSource из "@apollo/datasource-rest" в качестве источника данных. У класса есть метод getTracking, который получает статус отслеживания отправления при передаче номера отслеживания. Класс экспортирует FedexAPI по умолчанию. API и конечная точка отлично работают на Postman.

У меня есть этот code инициализации сервера:

code resolver:

Я попытался создать экземпляр класса FedEx, и он успешно создал объект FedEx в моем индексном файле.

Я могу получить доступ к trackigNumber при использовании запроса trackingInfo. Однако datasource не определен в файле resolver.

const server = new ApolloServer({
  typeDefs,
  resolvers,
  dataSources: () => {
    console.log("Testtest");
    const fedexAPI = new FedexAPI();
    console.log("fedexAPI", fedexAPI);
    return {
      fedexAPI,
    };
  },
});

const { url } = await startStandaloneServer(server, {
  listen: { port: 4000 },
  context: async () => ({}),
});
export const resolvers = {
  Query: {
    trackingInfo: async (_, { trackingNumber }, { dataSources }) => {
      console.log("Data Source", dataSources, trackingNumber);
    
      try {
        return await dataSources.fedexAPI.getTracking(trackingNumber);
      } catch (error) {
        console.error("Error while fetching tracking info:", error);
        throw new Error("Failed to retrieve tracking information");
      }

      return dataSources.fedexAPI.getTracking(trackingNumber);
    },
  },
};

Карп
Вопрос задан8 сентября 2024 г.

1 Ответ

Ваш ответ

Загрузить файл.