Dedicated to the Hydrogen framework, headless commerce, and building custom storefronts using the Storefront API.
Hi,
I love the new metaobject but I have an issue using them with the api, I can't retrieve the metaobject reference on metafields.
I have a metafield on my pages called "sections" which is a list of metaobject. When using the storefront api to get this meta fields I see that it's working but the reference is always null
My Query:
metafield(namespace:"front",key:"sections"){ id type value reference{ ...on Metaobject{ id } }
The api returns
"metafield": { "id": "gid://shopify/Metafield/25653462532283", "type": "list.mixed_reference", "value": "[\"gid://shopify/Metaobject/7798971\",\"gid://shopify/Metaobject/7831739\"]", "reference": null, "references": null }
Do you know why my reference and references are null even if I can see on the api documentation that the query should work?
Hi @PaulBouisset 👋
Since the metafield is of `list.mixed_references` type, you will need to use the `Metafields.references` connection in your query. It should something like the below:
{
metafield(id: "gid://shopify/Metafield/25653462532283") {
id
type
value
references(first: 10) {
nodes {
... on Metaobject {
id
}
}
}
}
}
Hope that helps!
Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog
Hi, thank you for your help but my query was not complete in my previous message.
There is still an issue.
Here is my full query:
query PageContent{
page(handle:"parent"){
id
handle
metafields(identifiers:[{namespace:"front",key:"sections"}]){
id
type
value
reference{
...on Metaobject{
id
}
}
references(first:10){
edges{
node{
...on Metaobject{
id
type
}
}
}
pageInfo{
hasNextPage
}
}
}
}
}
And the answer
{
"data": {
"page": {
"id": "gid://shopify/Page/87762206907",
"handle": "parent",
"metafields": [
{
"id": "gid://shopify/Metafield/25653462532283",
"type": "list.mixed_reference",
"value": "[\"gid://shopify/Metaobject/7798971\",\"gid://shopify/Metaobject/7831739\"]",
"reference": null,
"references": null
}
]
}
}
}
As you can see references is null as well even if the value on my mixed reference contains metaobjects.
Would you please try this curl request instead? We are unable to replicate this behaviour using version 2023-01.
curl -L -X POST 'https://STORE_NAME.myshopify.com/admin/api/2023-01/graphql.json' \
-H 'X-Shopify-Access-Token: ACCESS_TOKEN' \
-H 'Content-Type: application/json' \
--data-raw '{"query":"query ($mf: ID!) {\n metafield(id: $mf) {\n id\n type\n value\n references(first: 10) {\n nodes {\n ... on Metaobject {\n id\n }\n }\n }\n }\n}\n","variables":{"mf":"gid://shopify/Metafield/25653462532283"}}'
Otherwise, there may be an issue with this particular metafield ID 25653462532283 and we would need you to contact us here with an authenticated account with permissions to this merchant store.
Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog
Thank you for taking the time on this!
This specific query works but it's via the admin api and I want to use the storefront api. The second issue is that for the query you sent I would need to know the metaobject id in advance so do two requests to get the data I need.
It seems that there is an issue getting the metaobjects reference in the storefront api
Hey @PaulBouisset - we think we may have a resolution for this. Can you confirm if you've requested the unauthenticated_read_metaobjects storefront API scope for your app on the shop? Ideally, if the scope wasn't approved by the shop, it would return an error message stating this, but it is possible that it could return a null array for the metaobject references field too.
Hope to hear from you soon - let us know if this resolves the issue. If not, we'll take a closer look to confirm next steps (including a note to improve error messaging if this is the case here). Thanks again for reaching out, happy to keep digging into this if need be.
Al | Shopify Developer Support
Developer Support @ Shopify
- Was this reply helpful? Click Like to let us know!
- Was your question answered? Mark it as an Accepted Solution
- To learn more visit Shopify.dev or the Shopify Web Design and Development Blog
I'm also having this same issue.
v2023-01
Requested -
swatch: metafield(namespace: "custom", key: "swatch") {
key
value
references(first: 250) {
edges {
node {
... on Metaobject {
fields {
key
value
...
Returning -
"swatch": {
"key": "swatch",
"value": "[\"gid://shopify/Metaobject/191070393\",\"gid://shopify/Metaobject/191103161\",\"gid://shopify/Metaobject/191135929\"]",
"references": null
}
I tested with a single Metaobject and the results were the same.
Hi, I am using the Shopify graphql app and I re-installed it with all the permissions to make sure but there is still the same issue.
The references are always null.
Is it possible that this bug only happen because the permissions of the Shopify Graphql app are not working correctly?
I don't believe it is, I have all permissions set for storefront, and have tested in graphql app and directly to the api. @ShopifyDevSup can you confirm this works correctly in your test environment? Seems like something is a miss on the api. If I test a list of related products they come through correctly.
I am having this issue. Were you able to resolve it?
I requested the metaobjects directly so -
swatches: metaobjects(first: 250, type: "Swatch") {
edges {
node {
fields {
key
value
}
}
}
}