Я получаю 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);
},
},
};