GraphQLを用いた顧客メタフィールドの更新について質問があります。
行いたいこと
GraphQLのmutationを用いて顧客のメタフィールド(コンテンツタイプ:日付と時刻のリスト)を変更したいです。
そのために必要な要素を箇条書きすると下記のようになりました。
- メタフィールドの値の取得
- 扱いやすい形への整形(String→array)
- 新たなタイムスタンプの追加(pushを行う)
- リクエストに対する適切な形への整形
問題点
クエリを用いてメタフィールドの値を取得できましたが下記のようにString型で返ってきているため、変更が行いづらく、なんとか配列の形に変更を行いました。
その後、新しいタイムスタンプをpushして、リクエストとして適切な形へと変更を行いましたが、値の更新が行えていません。
現状
他のメタフィールドの値の更新(真偽値や一つのタイムスタンプ)は問題なく行えているため、アクセス権限が原因である可能性は限りなく低いと思っております。個人的に上記の1~3の処理は問題ないと思っておりまして、問題は4の処理だと考えております。
ソースコード
//metafieldの取得結果
"[\"2022-09-29T02:30:00Z\",\"2022-10-02T02:31:36.211Z\"]"
//replaceとsplitを用いた配列へ変形処理を行う
TimeListValue = TimeListValue. Replace("[", "").replace("]", "").replace(/[\"]/g, "").split(",");
//TimeListValueの出力結果 変形成功
[ '2022-09-29T02:30:00Z', '2022-10-05T04:55:13.336Z' ]
//新しいタイムスタンプを上記の配列にpushする。
let date = new Date()
date = date.toISOString()
TimeListValue. Push(date)
//配列をリクエストとして適切な形に変形する処理。
const newArray = TimeListValue.map((arr)=>{
const test = '\"' + arr + '\"'
return test
}
const newTimeList = newArray.join(",\\");
//newTimeListの出力結果
"2022-09-29T02:30:00Z\",\"2022-10-05T05:40:19.145Z\"
//mutationのvariable
const mutatinonTimeVariable = {
input:{
id:customerId,//別で取得済み 顧客id
metafields: [
{ id:TimeMetafieldId,//別で取得済み metafieldのid
value:`"[\\${newTimeList}]"`,},
],
},
};
const mutationTime = `
mutation($input:CustomerInput!){
customerUpdate(input:$input){
customer {
lastName
firstName
metafield(key:"_timeList" namespace:"custom"){
value
key
}
}
}
}`;
//shopify-api-nodeを使ったgraphql操作 第一引数 操作内容 第二引数 variable
shopify.graphql(mutationTime,mutationTimeVariable);
shopify.graphql(mutationTimeQuery, mutationTimeVariable);
実行環境
node v16.16.0
shopify-api-node: 3.11.2
上記の環境で他のメタフィールドの値更新は行えているため実行環境は関係ないと思いますが、念のため記載させていただきます。
当該エラーの解決方法や代替策等がございましたら教えて頂きたく存じます。
何卒よろしくお願い致します。