如何处理 Shopify GraphQL 批量请求并下载响应?

How to process a Shopify GraphQL Bulk Request and download the response?

总的来说,我对 javascript 和 graphQL 还很陌生。我已尽最大努力进行自己的研究,但现在它变得有点复杂,我有点迷路了。

我正在为 Shopify (React/Node) 构建一个应用程序,它主要查询我商店的所有未完成订单,并检索这些订单中的所有商品。我只在寻找一种类型的物品,它是咖啡——我们烘焙它,所以我们需要知道我们所有咖啡产品的总重量。使用普通的 graphQL 查询看起来有点像这样:

1

虽然我超出了普通查询的限制,所以我需要发出批量查询请求。我已经管理好轮询批量查询并在控制台中检索数据,但这是我必须在应用程序中主动调用的东西 - 我需要数据在我的应用程序加载时准备就绪,然后我需要数据在那里并且易于管理,这样我就可以按照我进行普通查询的方式来映射它......而且对于我的生活我无法弄清楚。任何帮助将不胜感激,我不希望任何人完全为我做这件事,但我真的几乎没有掌握如何做 .post 请求。我才真正追求这个一个月左右。

我正在尝试在此处获取这些查询:

import gql from 'graphql-tag';

const BULK_OP = gql`
mutation {
  bulkOperationRunQuery(
    query:"""
    {
      orders(reverse:true, query: "fulfillment_status:unshipped AND status:open") {
        edges {
          node {
            id
            name
            lineItems {
              edges {
                node {
                  quantity
                  name
                  product {
                    productType
                    metafield(namespace: "global", key:"SO_num") {
                      value
                    }
                  }
                  variant {
                    weight
                  }
                }
              }
            }
          }
        }
      }
      collections(first: 1, query: "id:260752932934") {
        edges {
          node {
            id
            products(first: 3, sortKey: BEST_SELLING) {
              edges {
                node {
                  title
                  metafield(namespace: "global", key: "SO_num") {
                    value
                  }
                }
              }
            }
          }
        }
      }
    }
"""
 ) {
   bulkOperation {
     id
     status
   }
   userErrors {
     field
     message
   }
 }
}
`;

const CHECK_BULK = gql`
  query {
    currentBulkOperation {
      id
      status
      errorCode
      createdAt
      completedAt
      objectCount
      fileSize
      url
      partialDataUrl
    }
  }
`;


export { BULK_OP, CHECK_BULK }

我会 post 更多我的代码,但在这一点上,我觉得大部分代码都需要根据我在应用程序之前实际需要做的事情来重做负载。

我们将不胜感激任何帮助,即使是方向正确的一点。

谢谢!

批量操作专为长运行宁处理而设计。

它只是一个数据流链,使用单独的请求

Apollo 客户端示例(有关选项详细信息,请参阅文档):

  • useMutation 到 'send' 批量 - returns 批量 id;

  • useQuery 检查处理状态...您可以使用 polling 选项自动重新查询(使用 network-only 获取策略)...和skip 完成后停止 - returns status, url, partialDataUrl;

  • 当批量数据准备就绪时,只需获取(使用 axios/fetch/无论什么)从 url(提供查询响应)-批量响应;

  • 在组件中使用您的[json解码]数据;

提示:运行 突变(按需,来自 [某些 onClick] 事件处理程序)在单独的组件中不混合 send/receive 操作 ...您可以在 localStorage 中 store/save 批量 id [和处理状态] 以在刷新时可用