Estoy tratando de ejecutar dos solicitudes de graphQL secuencialmente, la primera me da los datos que necesito en los parámetros de la segunda. Y no sé esperar a la primera.
Mi programa es el siguiente:
Tengo la declaración de mis solicitudes de GraphQL:
const [ addConfigurableProductToCart, { error: errorAddingSimpleProduct, loading: isAddSimpleLoading } ] = useMutation(ADD_CONFIGURABLE_MUTATION); const [getDataParentSku, { error, loading, data }] = useLazyQuery( GET_PARENT_SKU );Y el flujo de trabajo principal está en esta función.
const handleAddProductsToCart = useCallback( async csvProducts => { let tempSkuErrorList = []; for (let i = 0; i < csvProducts.length; i++) { const orParentSku = getDataVariable(csvProducts[i][0]); const variables = { cartId, quantity: parseInt(csvProducts[i][1], 10), sku: csvProducts[i][0], parentSku: orParentSku.then(res => { return res.products.items[0].orParentSku; }) }; try { await addConfigurableProductToCart({ variables }); } catch { tempSkuErrorList.push(csvProducts[i][0]); } } }, [ addConfigurableProductToCart, cartId, ] );getDataVariable() es la función que llama a la primera consulta ( useLazyQuery() ). Y su contenido es:
const getDataVariable = useCallback( async sku => { getDataParentSku({ variables: { sku: sku } }); return await data; }, [getDataParentSku, data] );El error que me ha ido encontrando todo el tiempo es que cuando necesito los datos, está indefinido.
Otra opción fue la idea de usar esta biblioteca https://www.npmjs.com/package/graphql-lodash , para fusionar la consulta en una sola, pero está desactualizada.
Muchas gracias por tu ayuda.