FROM CACHE - jp_header

mutation bulkOperationRunQueryでordersのqueryを変数で設定する方法について

modhtah
Shopify Partner
2 0 0

下記のようなクエリと変数の設定を作成し、Shopify GraphiQL Appで動作の確認ができました。

 

query($var: String!){

orders(first:1,query: $var) {
edges {
node {
id
updatedAt
lineItems(first:1) {
edges {
node {
id
}
}
}
}
}
}
}

 

variables

{
"var":"created_at:>='2022-8-6T00:00:00Z'"
}

これを、たとえば当日分の全データのようなかたちで取得したいと考えています。

そこで、このqueryの部分を、

 

mutation bulkOperationRunQuery{
bulkOperationRunQuery(
query: """
query($var: String!){
orders(first:1,query: $var) {
edges {
node {
id
updatedAt
customer {
id
}
lineItems(first:1) {
edges {
node {
id
}
}
}
}
}
}
}
"""
) {
bulkOperation {
id
status
}
userErrors {
field
message
}
}
}

のように変更しましたが、うまくいきません。

どのように組み立てれば、

・外部(プログラム内)からqueryを設定できる(create_atのみ指定できればOK)

・1日分をまとめて取得できる

上記2点を満たすGraphQLのクエリを組み立てられるでしょうか?

よろしくお願い致します。

1件の返信1
modhtah
Shopify Partner
2 0 0

自己解決しました。

クエリは下記のようにして、

 

      mutation getorders($query: String!){
        bulkOperationRunQuery(query:$query) {
          bulkOperation {
            id
            status
          }
          userErrors {
            field
            message
          }
        }
      }

 

変数を下記のようにしました。

 

variables

{"query":"{orders(query:\"created_at:>='2022-8-6T00:00:00Z'\"){edges{node{id\nupdatedAt\nlineItems(first:1)\n{\nedges\n{\nnode\n{\nid}}}}}}}"}

 

改行やダブルクォーテーションをエスケープして文字列に格納しました。

一応、目的は達成できましたが、クエリ全文を全て文字列として変数に含めるのは座りが悪い感じがします。

他の解決策や、この形式の場合の注意点などあればご指摘頂けると幸いです。