【问题标题】:Dynamically create graphql query based on criterias from javascript根据来自 javascript 的条件动态创建 graphql 查询
【发布时间】:2022-01-14 15:50:21
【问题描述】:

我正在使用 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。

【问题讨论】:

  • 更好的解决方案:更改api,使其接受entityIds的数组并一次返回多个products

标签: javascript graphql bigcommerce


【解决方案1】:

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

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

`

【讨论】:

  • 您可能希望对它们之间共享的所有字段使用片段。
猜你喜欢
  • 1970-01-01
  • 2019-11-15
  • 1970-01-01
  • 1970-01-01
  • 2018-12-21
  • 2018-11-25
  • 2021-05-30
  • 2022-11-29
  • 1970-01-01
相关资源
最近更新 更多