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?
2 Likes
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!
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.
1 Like
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.
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
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.
related: metafield(namespace: “custom”, key: “related”) {
key
value
references(first: 250) {
edges {
node {
… on Product {
title
…
Comes back as expected.
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
}
}
}
}
product(handle: $handle) {
id
…
That was sufficient for me, I didn’t really need a restricted list of metaobjects, so retrieving them all worked.