Liquid、JavaScriptなどに関する質問
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の数字部分を動的に変えれないのかなと思ったのですが、実現方法がわからず質問させていただきました。
@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になるまで繰り返せば、
全ての商品情報を取得できます。
ご存知であればスルーしてください。
(キュー田辺)
サポートの選択肢が増えていく中、最適となる選択の判断が難しくなっているかと存じます。今回は問題の解決に最適となるサポートの選択方法を、紹介させて頂きます。 選択肢のご紹介...
By Mirai Oct 6, 20242023年初頭、Shopifyペイメントアカウント、及びShopifyアカウント全体のセキュリティを強化する為の変更が適用されました。ユーザーのアカウントセキュリティを強化す...
By Mirai Sep 29, 2024概要: 年末/年明けは、消費者が最もショッピングを行う時期の一つです。特に、ブラックフライデー・サイバーマンデー(BFCM)は、世界中で注目される大規模なセールイベントであ...
By JapanGuru Sep 25, 2024