根据 javascript 中的条件动态创建 graphql 查询

Dynamically create graphql query based on criterias from javascript

我正在使用 GraphQl 和 bigcommerce 来抓取产品,我需要找到一个解决方案来使我的查询动态化——它基于 SKU 数组的长度。让它与一个产品一起工作是没有问题的。

let query = `
 query getProductBySku($sku: String) {
  site {
   product(sku: $sku) {
    id
    entityId
    name
    sku
    }
   }
  }
 `

到目前为止我发现我需要在 graphql 中使用别名之类的东西才能在这样的多个响应中获得多个产品

 query productById {
  site {
   o1: product(entityId: 167) {
    id
    entityId
    sku
    name
   }
  o2: product(entityId: 168 ) {
   id
   entityId
   sku
   name
  }
 }
}

但我需要能够根据数组的长度使此别名查询动态化。您将如何解决这个问题?是否有可能创建一个循环,在我 运行 之前写出查询。任何帮助我在正确的方向上的帮助将不胜感激!谢谢!

ps。我正在使用 javascript.

对于任何好奇的人,我最终能够使用 .map 动态循环查询和 运行 它 :)

let query = `
 query productBySku {
  site {
   ${sku
    .map(
      (product: any, idx: number) =>
       `pro${idx}: product(sku: "${product}") {
       id
       entityId
       sku
       name
      }
     `
    )
  .join('')}
 }
}

`