如何将变量传递给 metafields 在 Shopify Api Node js Graphql 客户端中设置突变?
How to pass variables to metafieldsSet mutation in Shopify Api Node js Grahql client?
我试图使用 metafieldsSet
突变来更新 Shopify
中的元字段,代码如下:
const client = new Shopify.Clients.Graphql(
process.env.SHOP,
process.env.PASSWORD
)
try {
const metafields = await client.query({
data: `mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
userErrors {
field
message
}
metafields {
key
value
}
}
}
`,
query: {
metafields: [
{
key: 'cb_inventory',
namespace: 'my_fields',
ownerId: 'gid://shopify/ProductVariant/40576138313890',
type: 'number_integer',
value: '25',
},
],
},
})
console.log(metafields)
res.status(200).json({ values: metafields })
} catch (error) {
console.log(error)
res.status(500).json(error)
}
但是上面的突变returns出现如下错误:
Expected value to not be null
Variable $metafields of type [MetafieldsSetInput!]! was provided invalid value
我假设变量 metafields
未能传递到突变中,因为当我 运行 在 Shopify Admin API GraphiQL explorer
中完全相同的突变时,没有错误
Shopify Admin API GraphiQL explorer mutation result
我也查看了@shopify/shopify-api 的github repo。在我的理解中,变量被添加到 query
对象。
我错过了什么?
谢谢,
霍华德
环境:下一个 js 11.1.2,
依赖项:@shopify/shopify-api
1.4.1
原来语法不正确。变量应放在 variables
对象内,而变异语句应放在 query
对象内。
以下代码现在有效:
const metafields = await client.query({
data: {
query: `mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
userErrors {
field
message
}
metafields {
key
value
}
}
}`,
variables: {
metafields: [
{
key: 'cb_inventory',
namespace: 'my_fields',
ownerId: 'gid://shopify/ProductVariant/40576138313890',
type: 'number_integer',
value: '25',
},
],
},
},
})
要使用预期的 API 版本,您需要先使用以下代码初始化上下文:
Shopify.Context.initialize({
API_KEY,
API_SECRET_KEY,
SCOPES: ['read_products', 'write_products'],
HOST_NAME: HOST,
API_VERSION: '2021-10',
})
我试图使用 metafieldsSet
突变来更新 Shopify
中的元字段,代码如下:
const client = new Shopify.Clients.Graphql(
process.env.SHOP,
process.env.PASSWORD
)
try {
const metafields = await client.query({
data: `mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
userErrors {
field
message
}
metafields {
key
value
}
}
}
`,
query: {
metafields: [
{
key: 'cb_inventory',
namespace: 'my_fields',
ownerId: 'gid://shopify/ProductVariant/40576138313890',
type: 'number_integer',
value: '25',
},
],
},
})
console.log(metafields)
res.status(200).json({ values: metafields })
} catch (error) {
console.log(error)
res.status(500).json(error)
}
但是上面的突变returns出现如下错误:
Expected value to not be null
Variable $metafields of type [MetafieldsSetInput!]! was provided invalid value
我假设变量 metafields
未能传递到突变中,因为当我 运行 在 Shopify Admin API GraphiQL explorer
中完全相同的突变时,没有错误
Shopify Admin API GraphiQL explorer mutation result
我也查看了@shopify/shopify-api 的github repo。在我的理解中,变量被添加到 query
对象。
我错过了什么?
谢谢,
霍华德
环境:下一个 js 11.1.2,
依赖项:@shopify/shopify-api
1.4.1
原来语法不正确。变量应放在 variables
对象内,而变异语句应放在 query
对象内。
以下代码现在有效:
const metafields = await client.query({
data: {
query: `mutation metafieldsSet($metafields: [MetafieldsSetInput!]!) {
metafieldsSet(metafields: $metafields) {
userErrors {
field
message
}
metafields {
key
value
}
}
}`,
variables: {
metafields: [
{
key: 'cb_inventory',
namespace: 'my_fields',
ownerId: 'gid://shopify/ProductVariant/40576138313890',
type: 'number_integer',
value: '25',
},
],
},
},
})
要使用预期的 API 版本,您需要先使用以下代码初始化上下文:
Shopify.Context.initialize({
API_KEY,
API_SECRET_KEY,
SCOPES: ['read_products', 'write_products'],
HOST_NAME: HOST,
API_VERSION: '2021-10',
})