Definí un tipo que se basa en dos puntos finales de API diferentes. Llamémoslos A y B. Para la consulta getObjects quiero devolver una matriz con objetos de tipo SomeType
type SomeType{ id: String // this comes from A url: String // this comes from B } type Query{ getObjects: [SomeType] } Tengo un solucionador para getObjects que recupera datos del endpoint A y los alimenta en SomeType para devolver una matriz. Pero necesito resolver la URL por separado, porque la URL proviene de un endpoint B , ¿verdad? Por lo tanto, escribo un resolver para el campo url . Pero no quiero hacer una solicitud dentro de la resolución de URL, ya que significaría que hago una solicitud para cada objeto desde el endpoint A (en mi caso, ~ 18k). el punto final B devuelve un objeto con pares clave-valor. La clave es la id que obtengo del endpoint A , y el valor tiene la url .
const resolvers = { SomeType: { url: (parent, {}, context) => { console.log(parent.id); // parent.id is needed to index the return someurl; } }, Query: { getObjects: async () => { const mainResponse = await fetch("endpoint A"); const responseForLogo = await fetch("endpoint B") const mainData = await mainResponse.json(); const secondaryData = await responseForLogo.json(); return mainData['data']; }, } } Pero, ¿cómo puedo obtener de manera eficiente la URL de cada objeto? Una forma que imaginé era hacer la solicitud dentro del resolutor getObjects y almacenar el objeto de respuesta y acceder a él en el resolutor para url .
Espero que alguien pueda ayudarme con eso.