FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

firstなどに与える引数部分を動的に変えられるのか?

firstなどに与える引数部分を動的に変えられるのか?

ryu245
Shopify Partner
12 0 1

 

query{
  orders(first: 5) {
    edges {
      node {
        id
        name
        customer {
          addresses(first:1) {
            id
            zip
          }
        }
        lineItems(first: 3) {
          edges {
            node {
              id
              sku
              name
              quantity
            }
          }
        }
      }
    }
  }
}

例えば上記のようなクエリを作成した際に現状、firstに入れる数字は適当に入れている状態なのですが、これだとoreders紐づくlineItemsを取得する際に3つの商品までしか取得できない問題があると思います。注文の中に含まれる商品は、1~10それ以上と色々な数が入る可能性があると思うので、注文ごとに含まれる商品数だけlineItemsのfirstの数字部分を動的に変えれないのかなと思ったのですが、実現方法がわからず質問させていただきました。

 

1件の返信1

Qcoltd
Shopify Partner
1096 447 441

@ryu245 様

 

ご存知であれば、スルーしてください。

 

firstやlastを動的に変更する方法は調べていないのですが、

pageInfoを使用されるのはどうでしょうか?

 

参考:

https://shopify.dev/docs/api/admin-graphql/2023-04/objects/PageInfo

https://shopify.dev/docs/api/usage/pagination-graphql

 

 

掲載いただいているコードを例にしますと、下記のようになります。

query{
  orders(first: 5) {
    edges {
      node {
        id
        name
        customer {
          addresses(first:1) {
            id
            zip
          }
        }
        lineItems(first: 3) {
          edges {
            node {
              id
              sku
              name
              quantity
            }
          }
                     pageInfo {
            hasNextPage
            endCursor
          }
        }
      }
    }
  }
}

 

商品が4つ以上ある場合、

pageInfo.hasNextPageがtrueとなります。

endCursorには、最後のnodeを表す文字列が入ってきますので、

下記のようにすることで、続きの3件を取得できます。

        lineItems(first: 3, after: "endCursorの文字列") {
          edges {
            node {
              id
              sku
              name
              quantity
            }
          }
                     pageInfo {
            hasNextPage
            endCursor
          }
        }

 pageInfo.hasNextPageがFalseになるまで繰り返せば、

全ての商品情報を取得できます。

 

 

ご存知であればスルーしてください。

(キュー田辺)

株式会社Q (キュー)
グラフィックデザイン、アパレル事業、Web制作など色々やっている渋谷区代々木の会社です。ShopifyでのECサイトの運営・開発も行なっています。
私たちについて: https://web.q-co.jp/ テックブログ: https://techlab.q-co.jp/